From 6001316fd56c8caaa24aee74482e5b1da596a140 Mon Sep 17 00:00:00 2001 From: rskoupy Date: Wed, 29 Nov 2023 18:58:13 +0100 Subject: [PATCH] Version 0.09 --- .../ptychoScopy-checkpoint.ipynb | 25 +++++++++++++----- calibrations.xlsx | Bin 27089 -> 32768 bytes ptychoScopy.ipynb | 25 +++++++++++++----- 3 files changed, 38 insertions(+), 12 deletions(-) diff --git a/.ipynb_checkpoints/ptychoScopy-checkpoint.ipynb b/.ipynb_checkpoints/ptychoScopy-checkpoint.ipynb index e318b6e..c291c34 100644 --- a/.ipynb_checkpoints/ptychoScopy-checkpoint.ipynb +++ b/.ipynb_checkpoints/ptychoScopy-checkpoint.ipynb @@ -349,7 +349,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 200, "id": "8055b802-cf83-4250-aea9-54e3e6b73db0", "metadata": {}, "outputs": [], @@ -469,7 +469,7 @@ " fig.add_trace(go.Scatter(showlegend=False, x=d, y=pctf, marker_color='gray', name='SSB-CTF',))\n", " \n", " fig.add_trace(go.Scatter(x=2*wavelength/(np.sin(semi_angle_corr*omega/1000))/100, y=pctf, marker_color='red', name=str(np.round(semi_angle_corr,2))+ ' mrad',))\n", - " fig.update_xaxes(title_text=\"Real space distance (Å)\", range=[0, 2.5], type=\"log\", zeroline=False)\n", + " fig.update_xaxes(title_text=\"Real space distance (Å)\", range=[0.0001, 2.5], type=\"log\", zeroline=False)\n", " \n", " fig.update_layout(legend=dict(orientation=\"h\",yanchor=\"bottom\",y=0.75,xanchor=\"right\",x=1))\n", " # fig3.update_layout(title={'text': \"CTF\",'y':0.93, 'x':0.12,'xanchor': 'left','yanchor': 'top'})\n", @@ -606,8 +606,8 @@ " \n", " focusdepth = widgets.Label(value = f'Depth of focus (nm) '+ str(np.round(wavelength/(semi_angle_corr/1000)**2/1000,1)), **align3) \n", " \n", - " checks = widgets.VBox([widgets.Label('Final checks'),check1,check2, check3,electron_dose,focusdepth, acquisition_time]) \n", - " checks.layout = widgets.Layout(border='dashed 1px gray',margin='30px 5px 5px 5px', padding='10px 10px 10px 10px')\n", + " \n", + "\n", "\n", "\n", " ### METHODS ########################################## \n", @@ -628,13 +628,26 @@ " fig4.update_layout(xaxis = dict(tickmode = 'array', tickvals = opt.cameralengths()))\n", " fig4.update_layout(width=800, height=225, margin =dict(l=110, r=30, t=30, b=30))\n", " \n", + " \n", + " checks = widgets.VBox([widgets.Label('Final checks'), electron_dose,focusdepth, acquisition_time]) \n", + " checks.layout = widgets.Layout(border='dashed 1px gray',margin='30px 5px 5px 5px', padding='10px 10px 10px 10px')\n", + " \n", + " \n", " ### SHOWING ###\n", " right_column = widgets.VBox([go.FigureWidget(fig),go.FigureWidget(fig5),go.FigureWidget(fig4)])\n", " left_column = widgets.VBox([go.FigureWidget(fig8), go.FigureWidget(fig6)])\n", " display(widgets.HBox([left_column, right_column, checks]))\n", " \n", + " \n", + " \n", + " \n", + " \n", " if method == 'iterative':\n", " \n", + " checks = widgets.VBox([widgets.Label('Final checks'),check1, check2, check3,electron_dose,focusdepth, acquisition_time]) \n", + " checks.layout = widgets.Layout(border='dashed 1px gray',margin='30px 5px 5px 5px', padding='10px 10px 10px 10px')\n", + " \n", + " \n", " ### PROBE WINDOW ##########################################\n", " if beam_diameter < probe_window/2:\n", " color = \"green\"\n", @@ -729,14 +742,14 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 201, "id": "7937f054-fcd0-4e67-a20f-7696f5903a94", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3ff56079396a4d12814896dd2a44263f", + "model_id": "a6b2620a5190425a830b6176ed85a285", "version_major": 2, "version_minor": 0 }, diff --git a/calibrations.xlsx b/calibrations.xlsx index c63e2e3747256ee36da3b779848eff50f9de771a..de4d876de42cccde1af21b17a06c1f75d97ec915 100644 GIT binary patch delta 17909 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 LQ;AKf3M2^tTGi&j delta 11962 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 diff --git a/ptychoScopy.ipynb b/ptychoScopy.ipynb index e318b6e..c291c34 100644 --- a/ptychoScopy.ipynb +++ b/ptychoScopy.ipynb @@ -349,7 +349,7 @@ }, { "cell_type": "code", - "execution_count": 179, + "execution_count": 200, "id": "8055b802-cf83-4250-aea9-54e3e6b73db0", "metadata": {}, "outputs": [], @@ -469,7 +469,7 @@ " fig.add_trace(go.Scatter(showlegend=False, x=d, y=pctf, marker_color='gray', name='SSB-CTF',))\n", " \n", " fig.add_trace(go.Scatter(x=2*wavelength/(np.sin(semi_angle_corr*omega/1000))/100, y=pctf, marker_color='red', name=str(np.round(semi_angle_corr,2))+ ' mrad',))\n", - " fig.update_xaxes(title_text=\"Real space distance (Å)\", range=[0, 2.5], type=\"log\", zeroline=False)\n", + " fig.update_xaxes(title_text=\"Real space distance (Å)\", range=[0.0001, 2.5], type=\"log\", zeroline=False)\n", " \n", " fig.update_layout(legend=dict(orientation=\"h\",yanchor=\"bottom\",y=0.75,xanchor=\"right\",x=1))\n", " # fig3.update_layout(title={'text': \"CTF\",'y':0.93, 'x':0.12,'xanchor': 'left','yanchor': 'top'})\n", @@ -606,8 +606,8 @@ " \n", " focusdepth = widgets.Label(value = f'Depth of focus (nm) '+ str(np.round(wavelength/(semi_angle_corr/1000)**2/1000,1)), **align3) \n", " \n", - " checks = widgets.VBox([widgets.Label('Final checks'),check1,check2, check3,electron_dose,focusdepth, acquisition_time]) \n", - " checks.layout = widgets.Layout(border='dashed 1px gray',margin='30px 5px 5px 5px', padding='10px 10px 10px 10px')\n", + " \n", + "\n", "\n", "\n", " ### METHODS ########################################## \n", @@ -628,13 +628,26 @@ " fig4.update_layout(xaxis = dict(tickmode = 'array', tickvals = opt.cameralengths()))\n", " fig4.update_layout(width=800, height=225, margin =dict(l=110, r=30, t=30, b=30))\n", " \n", + " \n", + " checks = widgets.VBox([widgets.Label('Final checks'), electron_dose,focusdepth, acquisition_time]) \n", + " checks.layout = widgets.Layout(border='dashed 1px gray',margin='30px 5px 5px 5px', padding='10px 10px 10px 10px')\n", + " \n", + " \n", " ### SHOWING ###\n", " right_column = widgets.VBox([go.FigureWidget(fig),go.FigureWidget(fig5),go.FigureWidget(fig4)])\n", " left_column = widgets.VBox([go.FigureWidget(fig8), go.FigureWidget(fig6)])\n", " display(widgets.HBox([left_column, right_column, checks]))\n", " \n", + " \n", + " \n", + " \n", + " \n", " if method == 'iterative':\n", " \n", + " checks = widgets.VBox([widgets.Label('Final checks'),check1, check2, check3,electron_dose,focusdepth, acquisition_time]) \n", + " checks.layout = widgets.Layout(border='dashed 1px gray',margin='30px 5px 5px 5px', padding='10px 10px 10px 10px')\n", + " \n", + " \n", " ### PROBE WINDOW ##########################################\n", " if beam_diameter < probe_window/2:\n", " color = \"green\"\n", @@ -729,14 +742,14 @@ }, { "cell_type": "code", - "execution_count": 180, + "execution_count": 201, "id": "7937f054-fcd0-4e67-a20f-7696f5903a94", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { - "model_id": "3ff56079396a4d12814896dd2a44263f", + "model_id": "a6b2620a5190425a830b6176ed85a285", "version_major": 2, "version_minor": 0 },