Newer
Older
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
3188
3189
3190
3191
3192
3193
3194
3195
3196
3197
3198
3199
3200
3201
3202
3203
3204
3205
3206
3207
3208
3209
3210
3211
3212
3213
3214
3215
3216
3217
3218
3219
3220
3221
3222
3223
3224
3225
3226
3227
3228
3229
3230
3231
3232
3233
3234
3235
3236
3237
3238
3239
3240
3241
3242
3243
3244
3245
3246
3247
3248
3249
3250
3251
3252
3253
3254
3255
3256
3257
3258
3259
3260
3261
3262
3263
3264
3265
3266
3267
3268
3269
3270
3271
3272
3273
3274
3275
3276
3277
3278
3279
3280
3281
3282
3283
3284
3285
3286
3287
3288
3289
3290
3291
3292
3293
3294
3295
3296
3297
3298
3299
3300
3301
3302
3303
3304
3305
3306
3307
3308
3309
3310
3311
3312
3313
3314
3315
3316
3317
3318
3319
3320
3321
3322
3323
3324
3325
3326
3327
3328
3329
3330
3331
3332
3333
3334
3335
3336
3337
3338
3339
3340
3341
3342
3343
3344
3345
3346
3347
3348
3349
3350
3351
3352
3353
3354
3355
3356
3357
3358
3359
3360
3361
3362
3363
3364
3365
3366
3367
3368
3369
3370
3371
3372
3373
3374
3375
3376
3377
3378
3379
3380
3381
3382
3383
3384
3385
3386
3387
3388
3389
3390
3391
3392
3393
3394
3395
3396
3397
3398
3399
3400
3401
3402
3403
3404
3405
3406
3407
3408
3409
3410
3411
3412
3413
3414
3415
3416
3417
3418
3419
3420
3421
3422
3423
3424
3425
3426
3427
3428
3429
3430
3431
3432
3433
3434
3435
3436
3437
3438
3439
3440
3441
3442
3443
3444
3445
3446
3447
3448
3449
3450
3451
3452
3453
3454
3455
3456
3457
3458
3459
3460
3461
3462
3463
3464
3465
3466
3467
3468
3469
3470
3471
3472
3473
3474
3475
3476
3477
3478
3479
3480
3481
3482
3483
3484
3485
3486
3487
3488
3489
3490
3491
3492
3493
3494
3495
3496
3497
3498
3499
3500
3501
3502
3503
3504
3505
3506
3507
3508
3509
3510
3511
3512
3513
3514
3515
3516
3517
3518
3519
3520
3521
3522
3523
3524
3525
3526
3527
3528
3529
3530
3531
3532
3533
3534
3535
3536
3537
3538
3539
3540
3541
3542
3543
3544
3545
3546
3547
3548
3549
3550
3551
3552
3553
3554
3555
3556
3557
3558
3559
3560
3561
3562
3563
3564
3565
3566
3567
3568
3569
3570
3571
3572
3573
3574
3575
3576
3577
3578
3579
3580
3581
3582
3583
3584
3585
3586
3587
3588
3589
3590
3591
3592
3593
3594
3595
3596
3597
3598
3599
3600
3601
3602
3603
3604
3605
3606
3607
3608
3609
3610
3611
3612
3613
3614
3615
3616
3617
3618
3619
3620
3621
3622
3623
3624
3625
3626
3627
3628
3629
3630
3631
3632
3633
3634
3635
3636
3637
3638
3639
3640
3641
3642
3643
3644
3645
3646
3647
3648
3649
3650
3651
3652
3653
3654
3655
3656
3657
3658
3659
3660
3661
3662
3663
3664
3665
3666
3667
3668
3669
3670
3671
3672
3673
3674
3675
3676
3677
3678
3679
3680
3681
3682
3683
3684
3685
3686
3687
3688
3689
3690
3691
3692
3693
3694
3695
3696
3697
3698
3699
3700
3701
3702
3703
3704
3705
3706
3707
3708
3709
3710
3711
3712
3713
3714
3715
3716
3717
3718
3719
3720
3721
3722
3723
3724
3725
3726
3727
3728
3729
3730
3731
3732
3733
3734
3735
3736
3737
3738
3739
3740
3741
3742
3743
3744
3745
3746
3747
3748
3749
3750
3751
3752
3753
3754
3755
3756
3757
3758
3759
3760
3761
3762
3763
3764
3765
3766
3767
3768
3769
3770
3771
3772
3773
3774
3775
3776
3777
3778
3779
3780
3781
3782
3783
3784
3785
3786
3787
3788
3789
3790
3791
3792
3793
3794
3795
3796
3797
3798
3799
3800
3801
3802
3803
3804
3805
3806
3807
3808
3809
3810
3811
3812
3813
3814
3815
3816
3817
3818
3819
3820
3821
3822
3823
3824
3825
3826
3827
3828
3829
3830
3831
3832
3833
3834
3835
3836
3837
3838
3839
3840
3841
3842
3843
3844
3845
3846
3847
3848
3849
3850
3851
3852
3853
3854
3855
3856
3857
3858
3859
3860
3861
3862
3863
3864
3865
3866
3867
3868
3869
3870
3871
3872
3873
3874
3875
3876
3877
3878
3879
3880
3881
3882
3883
3884
3885
3886
3887
3888
3889
3890
3891
3892
3893
3894
3895
3896
3897
3898
3899
3900
3901
3902
3903
3904
3905
3906
3907
3908
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919
3920
3921
3922
3923
3924
3925
3926
3927
3928
3929
3930
3931
3932
3933
3934
3935
3936
3937
3938
3939
3940
3941
3942
3943
3944
3945
3946
3947
3948
3949
3950
3951
3952
3953
3954
3955
3956
3957
3958
3959
3960
3961
3962
3963
3964
3965
3966
3967
3968
3969
3970
3971
3972
3973
3974
3975
3976
3977
3978
3979
3980
3981
3982
3983
3984
3985
3986
3987
3988
3989
3990
3991
3992
3993
3994
3995
3996
3997
3998
3999
4000
" // Request matplotlib to resize the figure. Matplotlib will then trigger a resize in the client,\n",
" // which will in turn request a refresh of the image.\n",
" this.send_message('resize', {'width': x_pixels, 'height': y_pixels});\n",
"}\n",
"\n",
"mpl.figure.prototype.send_message = function(type, properties) {\n",
" properties['type'] = type;\n",
" properties['figure_id'] = this.id;\n",
" this.ws.send(JSON.stringify(properties));\n",
"}\n",
"\n",
"mpl.figure.prototype.send_draw_message = function() {\n",
" if (!this.waiting) {\n",
" this.waiting = true;\n",
" this.ws.send(JSON.stringify({type: \"draw\", figure_id: this.id}));\n",
" }\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" var format_dropdown = fig.format_dropdown;\n",
" var format = format_dropdown.options[format_dropdown.selectedIndex].value;\n",
" fig.ondownload(fig, format);\n",
"}\n",
"\n",
"\n",
"mpl.figure.prototype.handle_resize = function(fig, msg) {\n",
" var size = msg['size'];\n",
" if (size[0] != fig.canvas.width || size[1] != fig.canvas.height) {\n",
" fig._resize_canvas(size[0], size[1]);\n",
" fig.send_message(\"refresh\", {});\n",
" };\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_rubberband = function(fig, msg) {\n",
" var x0 = msg['x0'] / mpl.ratio;\n",
" var y0 = (fig.canvas.height - msg['y0']) / mpl.ratio;\n",
" var x1 = msg['x1'] / mpl.ratio;\n",
" var y1 = (fig.canvas.height - msg['y1']) / mpl.ratio;\n",
" x0 = Math.floor(x0) + 0.5;\n",
" y0 = Math.floor(y0) + 0.5;\n",
" x1 = Math.floor(x1) + 0.5;\n",
" y1 = Math.floor(y1) + 0.5;\n",
" var min_x = Math.min(x0, x1);\n",
" var min_y = Math.min(y0, y1);\n",
" var width = Math.abs(x1 - x0);\n",
" var height = Math.abs(y1 - y0);\n",
"\n",
" fig.rubberband_context.clearRect(\n",
" 0, 0, fig.canvas.width, fig.canvas.height);\n",
"\n",
" fig.rubberband_context.strokeRect(min_x, min_y, width, height);\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_figure_label = function(fig, msg) {\n",
" // Updates the figure title.\n",
" fig.header.textContent = msg['label'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_cursor = function(fig, msg) {\n",
" var cursor = msg['cursor'];\n",
" switch(cursor)\n",
" {\n",
" case 0:\n",
" cursor = 'pointer';\n",
" break;\n",
" case 1:\n",
" cursor = 'default';\n",
" break;\n",
" case 2:\n",
" cursor = 'crosshair';\n",
" break;\n",
" case 3:\n",
" cursor = 'move';\n",
" break;\n",
" }\n",
" fig.rubberband_canvas.style.cursor = cursor;\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_message = function(fig, msg) {\n",
" fig.message.textContent = msg['message'];\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_draw = function(fig, msg) {\n",
" // Request the server to send over a new figure.\n",
" fig.send_draw_message();\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_image_mode = function(fig, msg) {\n",
" fig.image_mode = msg['mode'];\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Called whenever the canvas gets updated.\n",
" this.send_message(\"ack\", {});\n",
"}\n",
"\n",
"// A function to construct a web socket function for onmessage handling.\n",
"// Called in the figure constructor.\n",
"mpl.figure.prototype._make_on_message_function = function(fig) {\n",
" return function socket_on_message(evt) {\n",
" if (evt.data instanceof Blob) {\n",
" /* FIXME: We get \"Resource interpreted as Image but\n",
" * transferred with MIME type text/plain:\" errors on\n",
" * Chrome. But how to set the MIME type? It doesn't seem\n",
" * to be part of the websocket stream */\n",
" evt.data.type = \"image/png\";\n",
"\n",
" /* Free the memory for the previous frames */\n",
" if (fig.imageObj.src) {\n",
" (window.URL || window.webkitURL).revokeObjectURL(\n",
" fig.imageObj.src);\n",
" }\n",
"\n",
" fig.imageObj.src = (window.URL || window.webkitURL).createObjectURL(\n",
" evt.data);\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
" else if (typeof evt.data === 'string' && evt.data.slice(0, 21) == \"data:image/png;base64\") {\n",
" fig.imageObj.src = evt.data;\n",
" fig.updated_canvas_event();\n",
" fig.waiting = false;\n",
" return;\n",
" }\n",
"\n",
" var msg = JSON.parse(evt.data);\n",
" var msg_type = msg['type'];\n",
"\n",
" // Call the \"handle_{type}\" callback, which takes\n",
" // the figure and JSON message as its only arguments.\n",
" try {\n",
" var callback = fig[\"handle_\" + msg_type];\n",
" } catch (e) {\n",
" console.log(\"No handler for the '\" + msg_type + \"' message type: \", msg);\n",
" return;\n",
" }\n",
"\n",
" if (callback) {\n",
" try {\n",
" // console.log(\"Handling '\" + msg_type + \"' message: \", msg);\n",
" callback(fig, msg);\n",
" } catch (e) {\n",
" console.log(\"Exception inside the 'handler_\" + msg_type + \"' callback:\", e, e.stack, msg);\n",
" }\n",
" }\n",
" };\n",
"}\n",
"\n",
"// from http://stackoverflow.com/questions/1114465/getting-mouse-location-in-canvas\n",
"mpl.findpos = function(e) {\n",
" //this section is from http://www.quirksmode.org/js/events_properties.html\n",
" var targ;\n",
" if (!e)\n",
" e = window.event;\n",
" if (e.target)\n",
" targ = e.target;\n",
" else if (e.srcElement)\n",
" targ = e.srcElement;\n",
" if (targ.nodeType == 3) // defeat Safari bug\n",
" targ = targ.parentNode;\n",
"\n",
" // jQuery normalizes the pageX and pageY\n",
" // pageX,Y are the mouse positions relative to the document\n",
" // offset() returns the position of the element relative to the document\n",
" var x = e.pageX - $(targ).offset().left;\n",
" var y = e.pageY - $(targ).offset().top;\n",
"\n",
" return {\"x\": x, \"y\": y};\n",
"};\n",
"\n",
"/*\n",
" * return a copy of an object with only non-object keys\n",
" * we need this to avoid circular references\n",
" * http://stackoverflow.com/a/24161582/3208463\n",
" */\n",
"function simpleKeys (original) {\n",
" return Object.keys(original).reduce(function (obj, key) {\n",
" if (typeof original[key] !== 'object')\n",
" obj[key] = original[key]\n",
" return obj;\n",
" }, {});\n",
"}\n",
"\n",
"mpl.figure.prototype.mouse_event = function(event, name) {\n",
" var canvas_pos = mpl.findpos(event)\n",
"\n",
" if (name === 'button_press')\n",
" {\n",
" this.canvas.focus();\n",
" this.canvas_div.focus();\n",
" }\n",
"\n",
" var x = canvas_pos.x * mpl.ratio;\n",
" var y = canvas_pos.y * mpl.ratio;\n",
"\n",
" this.send_message(name, {x: x, y: y, button: event.button,\n",
" step: event.step,\n",
" guiEvent: simpleKeys(event)});\n",
"\n",
" /* This prevents the web browser from automatically changing to\n",
" * the text insertion cursor when the button is pressed. We want\n",
" * to control all of the cursor setting manually through the\n",
" * 'cursor' event from matplotlib */\n",
" event.preventDefault();\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" // Handle any extra behaviour associated with a key event\n",
"}\n",
"\n",
"mpl.figure.prototype.key_event = function(event, name) {\n",
"\n",
" // Prevent repeat events\n",
" if (name == 'key_press')\n",
" {\n",
" if (event.which === this._key)\n",
" return;\n",
" else\n",
" this._key = event.which;\n",
" }\n",
" if (name == 'key_release')\n",
" this._key = null;\n",
"\n",
" var value = '';\n",
" if (event.ctrlKey && event.which != 17)\n",
" value += \"ctrl+\";\n",
" if (event.altKey && event.which != 18)\n",
" value += \"alt+\";\n",
" if (event.shiftKey && event.which != 16)\n",
" value += \"shift+\";\n",
"\n",
" value += 'k';\n",
" value += event.which.toString();\n",
"\n",
" this._key_event_extra(event, name);\n",
"\n",
" this.send_message(name, {key: value,\n",
" guiEvent: simpleKeys(event)});\n",
" return false;\n",
"}\n",
"\n",
"mpl.figure.prototype.toolbar_button_onclick = function(name) {\n",
" if (name == 'download') {\n",
" this.handle_save(this, null);\n",
" } else {\n",
" this.send_message(\"toolbar_button\", {name: name});\n",
" }\n",
"};\n",
"\n",
"mpl.figure.prototype.toolbar_button_onmouseover = function(tooltip) {\n",
" this.message.textContent = tooltip;\n",
"};\n",
"mpl.toolbar_items = [[\"Home\", \"Reset original view\", \"fa fa-home icon-home\", \"home\"], [\"Back\", \"Back to previous view\", \"fa fa-arrow-left icon-arrow-left\", \"back\"], [\"Forward\", \"Forward to next view\", \"fa fa-arrow-right icon-arrow-right\", \"forward\"], [\"\", \"\", \"\", \"\"], [\"Pan\", \"Pan axes with left mouse, zoom with right\", \"fa fa-arrows icon-move\", \"pan\"], [\"Zoom\", \"Zoom to rectangle\", \"fa fa-square-o icon-check-empty\", \"zoom\"], [\"\", \"\", \"\", \"\"], [\"Download\", \"Download plot\", \"fa fa-floppy-o icon-save\", \"download\"]];\n",
"\n",
"mpl.extensions = [\"eps\", \"jpeg\", \"pdf\", \"png\", \"ps\", \"raw\", \"svg\", \"tif\"];\n",
"\n",
"mpl.default_extension = \"png\";var comm_websocket_adapter = function(comm) {\n",
" // Create a \"websocket\"-like object which calls the given IPython comm\n",
" // object with the appropriate methods. Currently this is a non binary\n",
" // socket, so there is still some room for performance tuning.\n",
" var ws = {};\n",
"\n",
" ws.close = function() {\n",
" comm.close()\n",
" };\n",
" ws.send = function(m) {\n",
" //console.log('sending', m);\n",
" comm.send(m);\n",
" };\n",
" // Register the callback with on_msg.\n",
" comm.on_msg(function(msg) {\n",
" //console.log('receiving', msg['content']['data'], msg);\n",
" // Pass the mpl event to the overridden (by mpl) onmessage function.\n",
" ws.onmessage(msg['content']['data'])\n",
" });\n",
" return ws;\n",
"}\n",
"\n",
"mpl.mpl_figure_comm = function(comm, msg) {\n",
" // This is the function which gets called when the mpl process\n",
" // starts-up an IPython Comm through the \"matplotlib\" channel.\n",
"\n",
" var id = msg.content.data.id;\n",
" // Get hold of the div created by the display call when the Comm\n",
" // socket was opened in Python.\n",
" var element = $(\"#\" + id);\n",
" var ws_proxy = comm_websocket_adapter(comm)\n",
"\n",
" function ondownload(figure, format) {\n",
" window.open(figure.imageObj.src);\n",
" }\n",
"\n",
" var fig = new mpl.figure(id, ws_proxy,\n",
" ondownload,\n",
" element.get(0));\n",
"\n",
" // Call onopen now - mpl needs it, as it is assuming we've passed it a real\n",
" // web socket which is closed, not our websocket->open comm proxy.\n",
" ws_proxy.onopen();\n",
"\n",
" fig.parent_element = element.get(0);\n",
" fig.cell_info = mpl.find_output_cell(\"<div id='\" + id + \"'></div>\");\n",
" if (!fig.cell_info) {\n",
" console.error(\"Failed to find cell for figure\", id, fig);\n",
" return;\n",
" }\n",
"\n",
" var output_index = fig.cell_info[2]\n",
" var cell = fig.cell_info[0];\n",
"\n",
"};\n",
"\n",
"mpl.figure.prototype.handle_close = function(fig, msg) {\n",
" var width = fig.canvas.width/mpl.ratio\n",
" fig.root.unbind('remove')\n",
"\n",
" // Update the output cell to use the data from the current canvas.\n",
" fig.push_to_output();\n",
" var dataURL = fig.canvas.toDataURL();\n",
" // Re-enable the keyboard manager in IPython - without this line, in FF,\n",
" // the notebook keyboard shortcuts fail.\n",
" IPython.keyboard_manager.enable()\n",
" $(fig.parent_element).html('<img src=\"' + dataURL + '\" width=\"' + width + '\">');\n",
" fig.close_ws(fig, msg);\n",
"}\n",
"\n",
"mpl.figure.prototype.close_ws = function(fig, msg){\n",
" fig.send_message('closing', msg);\n",
" // fig.ws.close()\n",
"}\n",
"\n",
"mpl.figure.prototype.push_to_output = function(remove_interactive) {\n",
" // Turn the data on the canvas into data in the output cell.\n",
" var width = this.canvas.width/mpl.ratio\n",
" var dataURL = this.canvas.toDataURL();\n",
" this.cell_info[1]['text/html'] = '<img src=\"' + dataURL + '\" width=\"' + width + '\">';\n",
"}\n",
"\n",
"mpl.figure.prototype.updated_canvas_event = function() {\n",
" // Tell IPython that the notebook contents must change.\n",
" IPython.notebook.set_dirty(true);\n",
" this.send_message(\"ack\", {});\n",
" var fig = this;\n",
" // Wait a second, then push the new image to the DOM so\n",
" // that it is saved nicely (might be nice to debounce this).\n",
" setTimeout(function () { fig.push_to_output() }, 1000);\n",
"}\n",
"\n",
"mpl.figure.prototype._init_toolbar = function() {\n",
" var fig = this;\n",
"\n",
" var nav_element = $('<div/>')\n",
" nav_element.attr('style', 'width: 100%');\n",
" this.root.append(nav_element);\n",
"\n",
" // Define a callback function for later on.\n",
" function toolbar_event(event) {\n",
" return fig.toolbar_button_onclick(event['data']);\n",
" }\n",
" function toolbar_mouse_event(event) {\n",
" return fig.toolbar_button_onmouseover(event['data']);\n",
" }\n",
"\n",
" for(var toolbar_ind in mpl.toolbar_items){\n",
" var name = mpl.toolbar_items[toolbar_ind][0];\n",
" var tooltip = mpl.toolbar_items[toolbar_ind][1];\n",
" var image = mpl.toolbar_items[toolbar_ind][2];\n",
" var method_name = mpl.toolbar_items[toolbar_ind][3];\n",
"\n",
" if (!name) { continue; };\n",
"\n",
" var button = $('<button class=\"btn btn-default\" href=\"#\" title=\"' + name + '\"><i class=\"fa ' + image + ' fa-lg\"></i></button>');\n",
" button.click(method_name, toolbar_event);\n",
" button.mouseover(tooltip, toolbar_mouse_event);\n",
" nav_element.append(button);\n",
" }\n",
"\n",
" // Add the status bar.\n",
" var status_bar = $('<span class=\"mpl-message\" style=\"text-align:right; float: right;\"/>');\n",
" nav_element.append(status_bar);\n",
" this.message = status_bar[0];\n",
"\n",
" // Add the close button to the window.\n",
" var buttongrp = $('<div class=\"btn-group inline pull-right\"></div>');\n",
" var button = $('<button class=\"btn btn-mini btn-primary\" href=\"#\" title=\"Stop Interaction\"><i class=\"fa fa-power-off icon-remove icon-large\"></i></button>');\n",
" button.click(function (evt) { fig.handle_close(fig, {}); } );\n",
" button.mouseover('Stop Interaction', toolbar_mouse_event);\n",
" buttongrp.append(button);\n",
" var titlebar = this.root.find($('.ui-dialog-titlebar'));\n",
" titlebar.prepend(buttongrp);\n",
"}\n",
"\n",
"mpl.figure.prototype._root_extra_style = function(el){\n",
" var fig = this\n",
" el.on(\"remove\", function(){\n",
"\tfig.close_ws(fig, {});\n",
" });\n",
"}\n",
"\n",
"mpl.figure.prototype._canvas_extra_style = function(el){\n",
" // this is important to make the div 'focusable\n",
" el.attr('tabindex', 0)\n",
" // reach out to IPython and tell the keyboard manager to turn it's self\n",
" // off when our div gets focus\n",
"\n",
" // location in version 3\n",
" if (IPython.notebook.keyboard_manager) {\n",
" IPython.notebook.keyboard_manager.register_events(el);\n",
" }\n",
" else {\n",
" // location in version 2\n",
" IPython.keyboard_manager.register_events(el);\n",
" }\n",
"\n",
"}\n",
"\n",
"mpl.figure.prototype._key_event_extra = function(event, name) {\n",
" var manager = IPython.notebook.keyboard_manager;\n",
" if (!manager)\n",
" manager = IPython.keyboard_manager;\n",
"\n",
" // Check for shift+enter\n",
" if (event.shiftKey && event.which == 13) {\n",
" this.canvas_div.blur();\n",
" event.shiftKey = false;\n",
" // Send a \"J\" for go to next cell\n",
" event.which = 74;\n",
" event.keyCode = 74;\n",
" manager.command_mode();\n",
" manager.handle_keydown(event);\n",
" }\n",
"}\n",
"\n",
"mpl.figure.prototype.handle_save = function(fig, msg) {\n",
" fig.ondownload(fig, null);\n",
"}\n",
"\n",
"\n",
"mpl.find_output_cell = function(html_output) {\n",
" // Return the cell and output element which can be found *uniquely* in the notebook.\n",
" // Note - this is a bit hacky, but it is done because the \"notebook_saving.Notebook\"\n",
" // IPython event is triggered only after the cells have been serialised, which for\n",
" // our purposes (turning an active figure into a static one), is too late.\n",
" var cells = IPython.notebook.get_cells();\n",
" var ncells = cells.length;\n",
" for (var i=0; i<ncells; i++) {\n",
" var cell = cells[i];\n",
" if (cell.cell_type === 'code'){\n",
" for (var j=0; j<cell.output_area.outputs.length; j++) {\n",
" var data = cell.output_area.outputs[j];\n",
" if (data.data) {\n",
" // IPython >= 3 moved mimebundle to data attribute of output\n",
" data = data.data;\n",
" }\n",
" if (data['text/html'] == html_output) {\n",
" return [cell, data, j];\n",
" }\n",
" }\n",
" }\n",
" }\n",
"}\n",
"\n",
"// Register the function which deals with the matplotlib target/channel.\n",
"// The kernel may be null if the page has been refreshed.\n",
"if (IPython.notebook.kernel != null) {\n",
" IPython.notebook.kernel.comm_manager.register_target('matplotlib', mpl.mpl_figure_comm);\n",
"}\n"
],
"text/plain": [
"<IPython.core.display.Javascript object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<img src=\"data:image/png;base64,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\" width=\"600\">"
],
"text/plain": [
"<IPython.core.display.HTML object>"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/plain": [
"{'pulseStart': 0,\n",
" 'pulseStop': 12,\n",
" 'baseStart': 0,\n",
" 'baseStop': 1,\n",
" 'period': 43,\n",
" 'npulses': 1820}"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plt.figure()\n",
"tb.get_dig_avg_trace(run_b, 'FastADC2_9raw').plot()\n",
"\n",
"bad_params = tb.check_peak_params(run_b, 'FastADC2_9raw')\n",
"bad_params"
]
},
{
"cell_type": "markdown",
"id": "9974f9b8",
"metadata": {},
"source": [
"We see that the peaks are very weak and this lead to a bad assignment of the pulse parameters by the peak-finding algorithm. From here, we can redefine the integration parameters according to the position on the average trace. We also know that the integration parameters of the previously loaded run are good. We will now use these integration parameters to extract the data from run 14.\n",
"\n",
"We first load the fields, but specify to the `load` function that we want to keep the raw trace without performing peak integration (`extract_fadc2=False`)."
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "e97c52cd",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",
" --xr-border-color: var(--jp-border-color2, #e0e0e0);\n",
" --xr-disabled-color: var(--jp-layout-color3, #bdbdbd);\n",
" --xr-background-color: var(--jp-layout-color0, white);\n",
" --xr-background-color-row-even: var(--jp-layout-color1, white);\n",
" --xr-background-color-row-odd: var(--jp-layout-color2, #eeeeee);\n",
"}\n",
"\n",
"html[theme=dark],\n",
"body.vscode-dark {\n",
" --xr-font-color0: rgba(255, 255, 255, 1);\n",
" --xr-font-color2: rgba(255, 255, 255, 0.54);\n",
" --xr-font-color3: rgba(255, 255, 255, 0.38);\n",
" --xr-border-color: #1F1F1F;\n",
" --xr-disabled-color: #515151;\n",
" --xr-background-color: #111111;\n",
" --xr-background-color-row-even: #111111;\n",
" --xr-background-color-row-odd: #313131;\n",
"}\n",
"\n",
".xr-wrap {\n",
" display: block;\n",
" min-width: 300px;\n",
" max-width: 700px;\n",
"}\n",
"\n",
".xr-text-repr-fallback {\n",
" /* fallback to plain text repr when CSS is not injected (untrusted notebook) */\n",
" display: none;\n",
"}\n",
"\n",
".xr-header {\n",
" padding-top: 6px;\n",
" padding-bottom: 6px;\n",
" margin-bottom: 4px;\n",
" border-bottom: solid 1px var(--xr-border-color);\n",
"}\n",
"\n",
".xr-header > div,\n",
".xr-header > ul {\n",
" display: inline;\n",
" margin-top: 0;\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-obj-type,\n",
".xr-array-name {\n",
" margin-left: 2px;\n",
" margin-right: 10px;\n",
"}\n",
"\n",
".xr-obj-type {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-sections {\n",
" padding-left: 0 !important;\n",
" display: grid;\n",
" grid-template-columns: 150px auto auto 1fr 20px 20px;\n",
"}\n",
"\n",
".xr-section-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-section-item input {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-item input + label {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label {\n",
" cursor: pointer;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-item input:enabled + label:hover {\n",
" color: var(--xr-font-color0);\n",
"}\n",
"\n",
".xr-section-summary {\n",
" grid-column: 1;\n",
" color: var(--xr-font-color2);\n",
" font-weight: 500;\n",
"}\n",
"\n",
".xr-section-summary > span {\n",
" display: inline-block;\n",
" padding-left: 0.5em;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label {\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-section-summary-in + label:before {\n",
" display: inline-block;\n",
" content: '►';\n",
" font-size: 11px;\n",
" width: 15px;\n",
" text-align: center;\n",
"}\n",
"\n",
".xr-section-summary-in:disabled + label:before {\n",
" color: var(--xr-disabled-color);\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label:before {\n",
" content: '▼';\n",
"}\n",
"\n",
".xr-section-summary-in:checked + label > span {\n",
" display: none;\n",
"}\n",
"\n",
".xr-section-summary,\n",
".xr-section-inline-details {\n",
" padding-top: 4px;\n",
" padding-bottom: 4px;\n",
"}\n",
"\n",
".xr-section-inline-details {\n",
" grid-column: 2 / -1;\n",
"}\n",
"\n",
".xr-section-details {\n",
" display: none;\n",
" grid-column: 1 / -1;\n",
" margin-bottom: 5px;\n",
"}\n",
"\n",
".xr-section-summary-in:checked ~ .xr-section-details {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-array-wrap {\n",
" grid-column: 1 / -1;\n",
" display: grid;\n",
" grid-template-columns: 20px auto;\n",
"}\n",
"\n",
".xr-array-wrap > label {\n",
" grid-column: 1;\n",
" vertical-align: top;\n",
"}\n",
"\n",
".xr-preview {\n",
" color: var(--xr-font-color3);\n",
"}\n",
"\n",
".xr-array-preview,\n",
".xr-array-data {\n",
" padding: 0 5px !important;\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-array-data,\n",
".xr-array-in:checked ~ .xr-array-preview {\n",
" display: none;\n",
"}\n",
"\n",
".xr-array-in:checked ~ .xr-array-data,\n",
".xr-array-preview {\n",
" display: inline-block;\n",
"}\n",
"\n",
".xr-dim-list {\n",
" display: inline-block !important;\n",
" list-style: none;\n",
" padding: 0 !important;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list li {\n",
" display: inline-block;\n",
" padding: 0;\n",
" margin: 0;\n",
"}\n",
"\n",
".xr-dim-list:before {\n",
" content: '(';\n",
"}\n",
"\n",
".xr-dim-list:after {\n",
" content: ')';\n",
"}\n",
"\n",
".xr-dim-list li:not(:last-child):after {\n",
" content: ',';\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-has-index {\n",
" font-weight: bold;\n",
"}\n",
"\n",
".xr-var-list,\n",
".xr-var-item {\n",
" display: contents;\n",
"}\n",
"\n",
".xr-var-item > div,\n",
".xr-var-item label,\n",
".xr-var-item > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-even);\n",
" margin-bottom: 0;\n",
"}\n",
"\n",
".xr-var-item > .xr-var-name:hover span {\n",
" padding-right: 5px;\n",
"}\n",
"\n",
".xr-var-list > li:nth-child(odd) > div,\n",
".xr-var-list > li:nth-child(odd) > label,\n",
".xr-var-list > li:nth-child(odd) > .xr-var-name span {\n",
" background-color: var(--xr-background-color-row-odd);\n",
"}\n",
"\n",
".xr-var-name {\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-var-dims {\n",
" grid-column: 2;\n",
"}\n",
"\n",
".xr-var-dtype {\n",
" grid-column: 3;\n",
" text-align: right;\n",
" color: var(--xr-font-color2);\n",
"}\n",
"\n",
".xr-var-preview {\n",
" grid-column: 4;\n",
"}\n",
"\n",
".xr-var-name,\n",
".xr-var-dims,\n",
".xr-var-dtype,\n",
".xr-preview,\n",
".xr-attrs dt {\n",
" white-space: nowrap;\n",
" overflow: hidden;\n",
" text-overflow: ellipsis;\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-var-name:hover,\n",
".xr-var-dims:hover,\n",
".xr-var-dtype:hover,\n",
".xr-attrs dt:hover {\n",
" overflow: visible;\n",
" width: auto;\n",
" z-index: 1;\n",
"}\n",
"\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" display: none;\n",
" background-color: var(--xr-background-color) !important;\n",
" padding-bottom: 5px !important;\n",
"}\n",
"\n",
".xr-var-attrs-in:checked ~ .xr-var-attrs,\n",
".xr-var-data-in:checked ~ .xr-var-data {\n",
" display: block;\n",
"}\n",
"\n",
".xr-var-data > table {\n",
" float: right;\n",
"}\n",
"\n",
".xr-var-name span,\n",
".xr-var-data,\n",
".xr-attrs {\n",
" padding-left: 25px !important;\n",
"}\n",
"\n",
".xr-attrs,\n",
".xr-var-attrs,\n",
".xr-var-data {\n",
" grid-column: 1 / -1;\n",
"}\n",
"\n",
"dl.xr-attrs {\n",
" padding: 0;\n",
" margin: 0;\n",
" display: grid;\n",
" grid-template-columns: 125px auto;\n",
"}\n",
"\n",
".xr-attrs dt, dd {\n",
" padding: 0;\n",
" margin: 0;\n",
" float: left;\n",
" padding-right: 10px;\n",
" width: auto;\n",
"}\n",
"\n",
".xr-attrs dt {\n",
" font-weight: normal;\n",
" grid-column: 1;\n",
"}\n",
"\n",
".xr-attrs dt:hover span {\n",
" display: inline-block;\n",
" background: var(--xr-background-color);\n",
" padding-right: 10px;\n",
"}\n",
"\n",
".xr-attrs dd {\n",
" grid-column: 2;\n",
" white-space: pre-wrap;\n",
" word-break: break-all;\n",
"}\n",
"\n",
".xr-icon-database,\n",
".xr-icon-file-text2 {\n",
" display: inline-block;\n",
" vertical-align: middle;\n",
" width: 1em;\n",
" height: 1.5em !important;\n",
" stroke-width: 0;\n",
" stroke: currentColor;\n",
" fill: currentColor;\n",
"}\n",
"</style><pre class='xr-text-repr-fallback'><xarray.Dataset>\n",
"Dimensions: (fadc2_samplesId: 100000, pulse_slot: 2700, sa3_pId: 400, trainId: 7804)\n",
"Coordinates:\n",
" * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n",
" * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n",
"Dimensions without coordinates: fadc2_samplesId, pulse_slot\n",
"Data variables:\n",
" bunchPatternTable (trainId, pulse_slot) uint32 2211625 0 ... 16777216\n",
" nrj (trainId) float64 931.6 931.6 931.5 ... 937.1 937.0 937.1\n",
" FastADC2_9raw (trainId, fadc2_samplesId) int16 -458 -425 ... -463 -470\n",
" SCS_SA3 (trainId, sa3_pId) float64 553.6 1.003e+03 ... 626.1\n",
"Attributes:\n",
" runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0013</pre><div class='xr-wrap' hidden><div class='xr-header'><div class='xr-obj-type'>xarray.Dataset</div></div><ul class='xr-sections'><li class='xr-section-item'><input id='section-2fad4339-13b0-4e78-8733-1a2ed0072cb1' class='xr-section-summary-in' type='checkbox' disabled ><label for='section-2fad4339-13b0-4e78-8733-1a2ed0072cb1' class='xr-section-summary' title='Expand/collapse section'>Dimensions:</label><div class='xr-section-inline-details'><ul class='xr-dim-list'><li><span>fadc2_samplesId</span>: 100000</li><li><span>pulse_slot</span>: 2700</li><li><span class='xr-has-index'>sa3_pId</span>: 400</li><li><span class='xr-has-index'>trainId</span>: 7804</li></ul></div><div class='xr-section-details'></div></li><li class='xr-section-item'><input id='section-b47191bd-36ce-4c6e-9eff-f668f29e2cc5' class='xr-section-summary-in' type='checkbox' checked><label for='section-b47191bd-36ce-4c6e-9eff-f668f29e2cc5' class='xr-section-summary' >Coordinates: <span>(2)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>trainId</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>uint64</div><div class='xr-var-preview xr-preview'>1501374970 ... 1501382869</div><input id='attrs-147d54fb-631b-4498-83b6-647937ef0a5d' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-147d54fb-631b-4498-83b6-647937ef0a5d' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-9af56f8c-a999-44ae-933a-bf1fdef4e37f' class='xr-var-data-in' type='checkbox'><label for='data-9af56f8c-a999-44ae-933a-bf1fdef4e37f' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([1501374970, 1501374971, 1501374972, ..., 1501382867, 1501382868,\n",
" 1501382869], dtype=uint64)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span class='xr-has-index'>sa3_pId</span></div><div class='xr-var-dims'>(sa3_pId)</div><div class='xr-var-dtype'>int64</div><div class='xr-var-preview xr-preview'>772 776 780 784 ... 2360 2364 2368</div><input id='attrs-2e458acd-66f0-40ab-92d4-6b6a4bf7b7ca' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-2e458acd-66f0-40ab-92d4-6b6a4bf7b7ca' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-ac17c446-1dcd-4f52-9d29-9d207b28e873' class='xr-var-data-in' type='checkbox'><label for='data-ac17c446-1dcd-4f52-9d29-9d207b28e873' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([ 772, 776, 780, ..., 2360, 2364, 2368])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-86f0ed7d-83cc-40c3-96fe-6a394f9e0f64' class='xr-section-summary-in' type='checkbox' checked><label for='section-86f0ed7d-83cc-40c3-96fe-6a394f9e0f64' class='xr-section-summary' >Data variables: <span>(4)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><ul class='xr-var-list'><li class='xr-var-item'><div class='xr-var-name'><span>bunchPatternTable</span></div><div class='xr-var-dims'>(trainId, pulse_slot)</div><div class='xr-var-dtype'>uint32</div><div class='xr-var-preview xr-preview'>2211625 0 ... 16777216 16777216</div><input id='attrs-ac04360b-8545-484e-adf8-c277b774ddb4' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-ac04360b-8545-484e-adf8-c277b774ddb4' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-a5df71a3-1a24-47cb-aa23-5527e52c8c7a' class='xr-var-data-in' type='checkbox'><label for='data-a5df71a3-1a24-47cb-aa23-5527e52c8c7a' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[ 2211625, 0, 2097193, ..., 16777216, 16777216, 16777216],\n",
" [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n",
" [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n",
" ...,\n",
" [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216],\n",
" [ 2146089, 0, 2097193, ..., 16777216, 16777216, 16777216],\n",
" [ 2144041, 0, 2097193, ..., 16777216, 16777216, 16777216]],\n",
" dtype=uint32)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>nrj</span></div><div class='xr-var-dims'>(trainId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>931.6 931.6 931.5 ... 937.0 937.1</div><input id='attrs-08807b62-67ec-4fc4-86eb-c2212cae249b' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-08807b62-67ec-4fc4-86eb-c2212cae249b' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-6fbf4748-01c7-4bf2-b85d-b1859dee13be' class='xr-var-data-in' type='checkbox'><label for='data-6fbf4748-01c7-4bf2-b85d-b1859dee13be' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([931.56104815, 931.58133731, 931.54481745, ..., 937.07140648,\n",
" 937.04266612, 937.05908897])</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>FastADC2_9raw</span></div><div class='xr-var-dims'>(trainId, fadc2_samplesId)</div><div class='xr-var-dtype'>int16</div><div class='xr-var-preview xr-preview'>-458 -425 -437 ... -491 -463 -470</div><input id='attrs-c7001c2e-ebe5-43f8-9ad7-948140bfbbc0' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-c7001c2e-ebe5-43f8-9ad7-948140bfbbc0' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-f6b485bc-bd9d-4eeb-aa23-821083ef452c' class='xr-var-data-in' type='checkbox'><label for='data-f6b485bc-bd9d-4eeb-aa23-821083ef452c' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[-458, -425, -437, ..., -355, -357, -363],\n",
" [-400, -393, -382, ..., -410, -410, -423],\n",
" [-448, -474, -453, ..., -337, -362, -363],\n",
" ...,\n",
" [-374, -384, -380, ..., -472, -475, -478],\n",
" [-460, -452, -452, ..., -345, -348, -358],\n",
" [-426, -439, -461, ..., -491, -463, -470]], dtype=int16)</pre></div></li><li class='xr-var-item'><div class='xr-var-name'><span>SCS_SA3</span></div><div class='xr-var-dims'>(trainId, sa3_pId)</div><div class='xr-var-dtype'>float64</div><div class='xr-var-preview xr-preview'>553.6 1.003e+03 ... 625.2 626.1</div><input id='attrs-cea2b99a-b38c-4de6-9dd0-44ba47530e9c' class='xr-var-attrs-in' type='checkbox' disabled><label for='attrs-cea2b99a-b38c-4de6-9dd0-44ba47530e9c' title='Show/Hide attributes'><svg class='icon xr-icon-file-text2'><use xlink:href='#icon-file-text2'></use></svg></label><input id='data-8fcc6829-f175-4ff4-9331-c6cf62883e74' class='xr-var-data-in' type='checkbox'><label for='data-8fcc6829-f175-4ff4-9331-c6cf62883e74' title='Show/Hide data repr'><svg class='icon xr-icon-database'><use xlink:href='#icon-database'></use></svg></label><div class='xr-var-attrs'><dl class='xr-attrs'></dl></div><div class='xr-var-data'><pre>array([[ 553.58990479, 1002.7635498 , 588.21862793, ..., 159.72709656,\n",
" 584.90869141, 469.00732422],\n",
" [ 729.78295898, 197.31863403, 350.71511841, ..., 333.3782959 ,\n",
" 239.52154541, 1348.59741211],\n",
" [1012.35583496, 155.80020142, 1075.75500488, ..., 780.81335449,\n",
" 518.77160645, 652.95458984],\n",
" ...,\n",
" [ 712.21923828, 687.50018311, 623.03265381, ..., 995.31140137,\n",
" 853.53509521, 1076.88537598],\n",
" [ 337.43884277, 476.76254272, 561.50762939, ..., 634.65576172,\n",
" 1289.45837402, 382.07299805],\n",
" [ 313.94122314, 462.3732605 , 684.91363525, ..., 132.80506897,\n",
" 625.18811035, 626.13842773]])</pre></div></li></ul></div></li><li class='xr-section-item'><input id='section-fa21cc1f-a37b-4fc4-ad18-e69cf90d27dc' class='xr-section-summary-in' type='checkbox' checked><label for='section-fa21cc1f-a37b-4fc4-ad18-e69cf90d27dc' class='xr-section-summary' >Attributes: <span>(1)</span></label><div class='xr-section-inline-details'></div><div class='xr-section-details'><dl class='xr-attrs'><dt><span>runFolder :</span></dt><dd>/gpfs/exfel/exp/SCS/202202/p002956/raw/r0013</dd></dl></div></li></ul></div></div>"
],
"text/plain": [
"<xarray.Dataset>\n",
"Dimensions: (fadc2_samplesId: 100000, pulse_slot: 2700, sa3_pId: 400, trainId: 7804)\n",
"Coordinates:\n",
" * trainId (trainId) uint64 1501374970 1501374971 ... 1501382869\n",
" * sa3_pId (sa3_pId) int64 772 776 780 784 ... 2356 2360 2364 2368\n",
"Dimensions without coordinates: fadc2_samplesId, pulse_slot\n",
"Data variables:\n",
" bunchPatternTable (trainId, pulse_slot) uint32 2211625 0 ... 16777216\n",
" nrj (trainId) float64 931.6 931.6 931.5 ... 937.1 937.0 937.1\n",
" FastADC2_9raw (trainId, fadc2_samplesId) int16 -458 -425 ... -463 -470\n",
" SCS_SA3 (trainId, sa3_pId) float64 553.6 1.003e+03 ... 626.1\n",
"Attributes:\n",
" runFolder: /gpfs/exfel/exp/SCS/202202/p002956/raw/r0013"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"new_params = good_params\n",
"\n",
"# or we can define the new parameters manually:\n",
"# new_params = {'pulseStart': 6759,\n",
"# 'pulseStop': 6776,\n",
"# 'baseStart': 6743,\n",
"# 'baseStop': 6755,\n",
"# 'period': 96,\n",
"# 'npulses': 400}\n",
"\n",
"run_b, ds_b = tb.load(proposal, runNB, fields, extract_fadc2=False)\n",
"ds_b"
]
},
{
"cell_type": "markdown",
"id": "d4ac83a7",
"metadata": {},
"source": [
"In `ds_b`, `FastADC2_9raw` is the raw trace with dimensions `['trainId, 'fadc2_samplesId']`. We can now call `get_digitizer_peaks()`: "
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "ab494efd",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<div><svg style=\"position: absolute; width: 0; height: 0; overflow: hidden\">\n",
"<defs>\n",
"<symbol id=\"icon-database\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M16 0c-8.837 0-16 2.239-16 5v4c0 2.761 7.163 5 16 5s16-2.239 16-5v-4c0-2.761-7.163-5-16-5z\"></path>\n",
"<path d=\"M16 17c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"<path d=\"M16 26c-8.837 0-16-2.239-16-5v6c0 2.761 7.163 5 16 5s16-2.239 16-5v-6c0 2.761-7.163 5-16 5z\"></path>\n",
"</symbol>\n",
"<symbol id=\"icon-file-text2\" viewBox=\"0 0 32 32\">\n",
"<path d=\"M28.681 7.159c-0.694-0.947-1.662-2.053-2.724-3.116s-2.169-2.030-3.116-2.724c-1.612-1.182-2.393-1.319-2.841-1.319h-15.5c-1.378 0-2.5 1.121-2.5 2.5v27c0 1.378 1.122 2.5 2.5 2.5h23c1.378 0 2.5-1.122 2.5-2.5v-19.5c0-0.448-0.137-1.23-1.319-2.841zM24.543 5.457c0.959 0.959 1.712 1.825 2.268 2.543h-4.811v-4.811c0.718 0.556 1.584 1.309 2.543 2.268zM28 29.5c0 0.271-0.229 0.5-0.5 0.5h-23c-0.271 0-0.5-0.229-0.5-0.5v-27c0-0.271 0.229-0.5 0.5-0.5 0 0 15.499-0 15.5 0v7c0 0.552 0.448 1 1 1h7v19.5z\"></path>\n",
"<path d=\"M23 26h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 22h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"<path d=\"M23 18h-14c-0.552 0-1-0.448-1-1s0.448-1 1-1h14c0.552 0 1 0.448 1 1s-0.448 1-1 1z\"></path>\n",
"</symbol>\n",
"</defs>\n",
"</svg>\n",
"<style>/* CSS stylesheet for displaying xarray objects in jupyterlab.\n",
" *\n",
" */\n",
"\n",
":root {\n",
" --xr-font-color0: var(--jp-content-font-color0, rgba(0, 0, 0, 1));\n",
" --xr-font-color2: var(--jp-content-font-color2, rgba(0, 0, 0, 0.54));\n",
" --xr-font-color3: var(--jp-content-font-color3, rgba(0, 0, 0, 0.38));\n",