|
5 | 5 | # structure using time-of-flight neutron powder diffraction data from WISH at
|
6 | 6 | # ISIS.
|
7 | 7 | #
|
8 |
| -# Temporarily, only a single dataset from detector banks 5 & 6 is used here. |
| 8 | +# Two datasets from detector banks 5_6 and 4_7 are used for joint fitting. |
9 | 9 |
|
10 | 10 | # %% [markdown]
|
11 | 11 | # ## Import Library
|
|
45 | 45 | # ### Set Atom Sites
|
46 | 46 |
|
47 | 47 | # %%
|
48 |
| -model.atom_sites.add('Ca', 'Ca', 0.4661, 0.0, 0.25, wyckoff_letter="b", b_iso=0.9) |
49 |
| -model.atom_sites.add('Al', 'Al', 0.25171, 0.25171, 0.25171, wyckoff_letter="a", b_iso=0.66) |
50 |
| -model.atom_sites.add('Na', 'Na', 0.08481, 0.08481, 0.08481, wyckoff_letter="a", b_iso=1.9) |
51 |
| -model.atom_sites.add('F1', 'F', 0.1375, 0.3053, 0.1195, wyckoff_letter="c", b_iso=0.9) |
52 |
| -model.atom_sites.add('F2', 'F', 0.3626, 0.3634, 0.1867, wyckoff_letter="c", b_iso=1.28) |
53 |
| -model.atom_sites.add('F3', 'F', 0.4612, 0.4612, 0.4612, wyckoff_letter="a", b_iso=0.79) |
| 48 | +model.atom_sites.add('Ca', 'Ca', 0.4665, 0.0, 0.25, wyckoff_letter="b", b_iso=0.92) |
| 49 | +model.atom_sites.add('Al', 'Al', 0.2520, 0.2520, 0.2520, wyckoff_letter="a", b_iso=0.73) |
| 50 | +model.atom_sites.add('Na', 'Na', 0.0852, 0.0852, 0.0852, wyckoff_letter="a", b_iso=2.08) |
| 51 | +model.atom_sites.add('F1', 'F', 0.1376, 0.3055, 0.1196, wyckoff_letter="c", b_iso=0.90) |
| 52 | +model.atom_sites.add('F2', 'F', 0.3623, 0.3631, 0.1870, wyckoff_letter="c", b_iso=1.37) |
| 53 | +model.atom_sites.add('F3', 'F', 0.4611, 0.4611, 0.4611, wyckoff_letter="a", b_iso=0.88) |
54 | 54 |
|
55 | 55 | # %% [markdown]
|
56 | 56 | # ## Define Experiment
|
|
61 | 61 | # ### Download Measured Data
|
62 | 62 |
|
63 | 63 | # %%
|
64 |
| -download_from_repository('wish_ncaf.xye', |
| 64 | +download_from_repository('wish_ncaf_5_6.xye', |
| 65 | + branch='docs', |
| 66 | + destination='data') |
| 67 | + |
| 68 | +# %% |
| 69 | +download_from_repository('wish_ncaf_4_7.xye', |
65 | 70 | branch='docs',
|
66 | 71 | destination='data')
|
67 | 72 |
|
68 | 73 | # %% [markdown]
|
69 | 74 | # ### Create Experiment
|
70 | 75 |
|
71 | 76 | # %%
|
72 |
| -expt = Experiment('wish', |
73 |
| - beam_mode='time-of-flight', |
74 |
| - data_path='data/wish_ncaf.xye') |
| 77 | +expt1 = Experiment('wish_5_6', |
| 78 | + beam_mode='time-of-flight', |
| 79 | + data_path='data/wish_ncaf_5_6.xye') |
| 80 | + |
| 81 | +# %% |
| 82 | +expt2 = Experiment('wish_4_7', |
| 83 | + beam_mode='time-of-flight', |
| 84 | + data_path='data/wish_ncaf_4_7.xye') |
75 | 85 |
|
76 | 86 | # %% [markdown]
|
77 | 87 | # ### Set Instrument
|
78 | 88 |
|
79 | 89 | # %%
|
80 |
| -expt.instrument.setup_twotheta_bank = 152.827 |
81 |
| -expt.instrument.calib_d_to_tof_offset = 0.0 |
82 |
| -expt.instrument.calib_d_to_tof_linear = 20770 |
83 |
| -expt.instrument.calib_d_to_tof_quad = -1.08308 |
| 90 | +expt1.instrument.setup_twotheta_bank = 152.827 |
| 91 | +expt1.instrument.calib_d_to_tof_offset = -13.0 |
| 92 | +expt1.instrument.calib_d_to_tof_linear = 20752.1 |
| 93 | +expt1.instrument.calib_d_to_tof_quad = -1.08308 |
| 94 | + |
| 95 | +# %% |
| 96 | +expt2.instrument.setup_twotheta_bank = 121.660 |
| 97 | +expt2.instrument.calib_d_to_tof_offset = -15.0 |
| 98 | +expt2.instrument.calib_d_to_tof_linear = 18640.7 |
| 99 | +expt2.instrument.calib_d_to_tof_quad = -0.47488 |
84 | 100 |
|
85 | 101 | # %% [markdown]
|
86 | 102 | # ### Set Peak Profile
|
87 | 103 |
|
88 | 104 | # %%
|
89 |
| -expt.peak_profile_type = 'pseudo-voigt * ikeda-carpenter' |
90 |
| -expt.peak.broad_gauss_sigma_0 = 0.0 |
91 |
| -expt.peak.broad_gauss_sigma_1 = 0.0 |
92 |
| -expt.peak.broad_gauss_sigma_2 = 5.0 |
93 |
| -expt.peak.broad_mix_beta_0 = 0.01 |
94 |
| -expt.peak.broad_mix_beta_1 = 0.01 |
95 |
| - |
96 |
| -# %% [markdown] |
97 |
| -# ### Set Peak Asymmetry |
| 105 | +expt1.peak_profile_type = 'pseudo-voigt * ikeda-carpenter' |
| 106 | +expt1.peak.broad_gauss_sigma_0 = 0.0 |
| 107 | +expt1.peak.broad_gauss_sigma_1 = 0.0 |
| 108 | +expt1.peak.broad_gauss_sigma_2 = 15.0 |
| 109 | +expt1.peak.broad_mix_beta_0 = 0.01 |
| 110 | +expt1.peak.broad_mix_beta_1 = 0.01 |
| 111 | +expt1.peak.asym_alpha_0 = -0.01 |
| 112 | +expt1.peak.asym_alpha_1 = 0.10 |
98 | 113 |
|
99 | 114 | # %%
|
100 |
| -expt.peak.asym_alpha_0 = 0.0 |
101 |
| -expt.peak.asym_alpha_1 = 0.1 |
| 115 | +expt2.peak_profile_type = 'pseudo-voigt * ikeda-carpenter' |
| 116 | +expt2.peak.broad_gauss_sigma_0 = 0.0 |
| 117 | +expt2.peak.broad_gauss_sigma_1 = 30.0 |
| 118 | +expt2.peak.broad_gauss_sigma_2 = 20.0 |
| 119 | +expt2.peak.broad_mix_beta_0 = 0.01 |
| 120 | +expt2.peak.broad_mix_beta_1 = 0.01 |
| 121 | +expt2.peak.asym_alpha_0 = -0.01 |
| 122 | +expt2.peak.asym_alpha_1 = 0.10 |
102 | 123 |
|
103 | 124 | # %% [markdown]
|
104 | 125 | # ### Set Background
|
105 | 126 |
|
106 | 127 | # %%
|
107 |
| -expt.background_type = 'line-segment' |
| 128 | +expt1.background_type = 'line-segment' |
108 | 129 | for x, y in [
|
109 | 130 | (9162, 465),
|
110 | 131 | (11136, 593),
|
|
135 | 156 | (91958, 268),
|
136 | 157 | (102712, 262)
|
137 | 158 | ]:
|
138 |
| - expt.background.add(x, y) |
| 159 | + expt1.background.add(x, y) |
| 160 | + |
| 161 | +# %% |
| 162 | +expt2.background_type = 'line-segment' |
| 163 | +for x, y in [ |
| 164 | + (9090, 488), |
| 165 | + (10672, 566), |
| 166 | + (12287, 494), |
| 167 | + (14037, 559), |
| 168 | + (15451, 529), |
| 169 | + (16764, 445), |
| 170 | + (18076, 460), |
| 171 | + (19456, 413), |
| 172 | + (20466, 511), |
| 173 | + (21880, 396), |
| 174 | + (23798, 391), |
| 175 | + (25447, 385), |
| 176 | + (28073, 349), |
| 177 | + (30058, 332), |
| 178 | + (32583, 309), |
| 179 | + (34804, 355), |
| 180 | + (37160, 318), |
| 181 | + (40324, 290), |
| 182 | + (46895, 260), |
| 183 | + (50631, 256), |
| 184 | + (54602, 246), |
| 185 | + (58439, 264), |
| 186 | + (66520, 250), |
| 187 | + (75002, 258), |
| 188 | + (83649, 257), |
| 189 | + (92770, 255), |
| 190 | + (101524, 260) |
| 191 | +]: |
| 192 | + expt2.background.add(x, y) |
139 | 193 |
|
140 | 194 | # %% [markdown]
|
141 | 195 | # ### Set Linked Phases
|
142 | 196 |
|
143 | 197 | # %%
|
144 |
| -expt.linked_phases.add('ncaf', scale=0.5) |
| 198 | +expt1.linked_phases.add('ncaf', scale=1.0) |
| 199 | + |
| 200 | +# %% |
| 201 | +expt2.linked_phases.add('ncaf', scale=2.0) |
145 | 202 |
|
146 | 203 | # %% [markdown]
|
147 | 204 | # ## Define Project
|
|
170 | 227 | # ### Add Experiment
|
171 | 228 |
|
172 | 229 | # %%
|
173 |
| -project.experiments.add(expt) |
| 230 | +project.experiments.add(expt1) |
| 231 | +project.experiments.add(expt2) |
174 | 232 |
|
175 | 233 | # %% [markdown]
|
176 | 234 | # ## Analysis
|
|
190 | 248 | project.analysis.current_minimizer = 'lmfit (leastsq)'
|
191 | 249 |
|
192 | 250 | # %% [markdown]
|
193 |
| -# ### Plot Measured vs Calculated |
194 |
| - |
195 |
| -# %% |
196 |
| -project.plot_meas_vs_calc(expt_name='wish', |
197 |
| - show_residual=True) |
| 251 | +# ### Set Fit Mode |
198 | 252 |
|
199 | 253 | # %%
|
200 |
| -project.plot_meas_vs_calc(expt_name='wish', |
201 |
| - x_min=37000, x_max=40000, |
202 |
| - show_residual=True) |
203 |
| - |
204 |
| -# %% [markdown] |
205 |
| -# ### Perform Fit 1/5 |
206 |
| -# |
207 |
| -# Set parameters to be refined. |
208 |
| - |
209 |
| -# %% |
210 |
| -model.cell.length_a.free = True |
211 |
| - |
212 |
| -expt.instrument.calib_d_to_tof_offset.free = True |
213 |
| -expt.linked_phases['ncaf'].scale.free = True |
214 |
| - |
215 |
| -# %% [markdown] |
216 |
| -# Show free parameters after selection. |
217 |
| - |
218 |
| -# %% |
219 |
| -project.analysis.show_free_params() |
220 |
| - |
221 |
| -# %% [markdown] |
222 |
| -# #### Run Fit |
223 |
| - |
224 |
| -# %% |
225 |
| -project.analysis.fit() |
| 254 | +project.analysis.fit_mode = 'joint' |
226 | 255 |
|
227 | 256 | # %% [markdown]
|
228 | 257 | # ### Plot Measured vs Calculated
|
229 | 258 |
|
230 | 259 | # %%
|
231 |
| -project.plot_meas_vs_calc(expt_name='wish', |
| 260 | +project.plot_meas_vs_calc(expt_name='wish_5_6', |
232 | 261 | show_residual=True)
|
233 | 262 |
|
234 | 263 | # %%
|
235 |
| -project.plot_meas_vs_calc(expt_name='wish', |
236 |
| - x_min=37000, x_max=40000, |
| 264 | +project.plot_meas_vs_calc(expt_name='wish_4_7', |
237 | 265 | show_residual=True)
|
238 | 266 |
|
239 | 267 | # %% [markdown]
|
240 |
| -# ### Perform Fit 2/5 |
| 268 | +# ### Perform Fit |
241 | 269 | #
|
242 |
| -# Set more parameters to be refined. |
243 |
| - |
244 |
| -# %% |
245 |
| -expt.peak.broad_gauss_sigma_2.free = True |
246 |
| -expt.peak.broad_mix_beta_0.free = True |
247 |
| -expt.peak.broad_mix_beta_1.free = True |
248 |
| -expt.peak.asym_alpha_0.free = True |
249 |
| -expt.peak.asym_alpha_1.free = True |
250 |
| - |
251 |
| -# %% [markdown] |
252 |
| -# Show free parameters after selection. |
253 |
| - |
254 |
| -# %% |
255 |
| -project.analysis.show_free_params() |
256 |
| - |
257 |
| -# %% [markdown] |
258 |
| -# #### Run Fit |
259 |
| - |
260 |
| -# %% |
261 |
| -project.analysis.fit() |
262 |
| - |
263 |
| -# %% [markdown] |
264 |
| -# #### Plot Measured vs Calculated |
265 |
| - |
266 |
| -# %% |
267 |
| -project.plot_meas_vs_calc(expt_name='wish', |
268 |
| - show_residual=True) |
269 |
| - |
270 |
| -# %% |
271 |
| -project.plot_meas_vs_calc(expt_name='wish', |
272 |
| - x_min=37000, x_max=40000, |
273 |
| - show_residual=True) |
274 |
| - |
275 |
| - |
276 |
| -# %% [markdown] |
277 |
| -# ### Perform Fit 3/5 |
278 |
| -# |
279 |
| -# Set more parameters to be refined. |
| 270 | +# Set parameters to be refined. |
280 | 271 |
|
281 | 272 | # %%
|
282 | 273 | model.atom_sites['Ca'].fract_x.free = True
|
|
290 | 281 | model.atom_sites['F2'].fract_z.free = True
|
291 | 282 | model.atom_sites['F3'].fract_x.free = True
|
292 | 283 |
|
293 |
| -# %% [markdown] |
294 |
| -# Show free parameters after selection. |
295 |
| - |
296 |
| -# %% |
297 |
| -project.analysis.show_free_params() |
298 |
| - |
299 |
| -# %% [markdown] |
300 |
| -# #### Run Fit |
301 |
| - |
302 |
| -# %% |
303 |
| -project.analysis.fit() |
304 |
| - |
305 |
| -# %% [markdown] |
306 |
| -# #### Plot Measured vs Calculated |
307 |
| - |
308 |
| -# %% |
309 |
| -project.plot_meas_vs_calc(expt_name='wish', |
310 |
| - show_residual=True) |
311 |
| - |
312 |
| -# %% |
313 |
| -project.plot_meas_vs_calc(expt_name='wish', |
314 |
| - x_min=37000, x_max=40000, |
315 |
| - show_residual=True) |
316 |
| - |
317 |
| -# %% [markdown] |
318 |
| -# ### Perform Fit 4/5 |
319 |
| -# |
320 |
| -# Set more parameters to be refined. |
321 |
| - |
322 |
| -# %% |
323 |
| -expt.instrument.calib_d_to_tof_linear.free = True |
324 |
| - |
325 | 284 | model.atom_sites['Ca'].b_iso.free = True
|
326 | 285 | model.atom_sites['Al'].b_iso.free = True
|
327 | 286 | model.atom_sites['Na'].b_iso.free = True
|
328 | 287 | model.atom_sites['F1'].b_iso.free = True
|
329 | 288 | model.atom_sites['F2'].b_iso.free = True
|
330 | 289 | model.atom_sites['F3'].b_iso.free = True
|
331 | 290 |
|
| 291 | +# %% |
| 292 | +expt1.linked_phases['ncaf'].scale.free = True |
| 293 | +expt1.instrument.calib_d_to_tof_offset.free = True |
| 294 | +expt1.instrument.calib_d_to_tof_linear.free = True |
| 295 | +expt1.peak.broad_gauss_sigma_2.free = True |
| 296 | +expt1.peak.broad_mix_beta_0.free = True |
| 297 | +expt1.peak.broad_mix_beta_1.free = True |
| 298 | +expt1.peak.asym_alpha_0.free = True |
| 299 | +expt1.peak.asym_alpha_1.free = True |
| 300 | + |
| 301 | +expt2.linked_phases['ncaf'].scale.free = True |
| 302 | +expt2.instrument.calib_d_to_tof_linear.free = True |
| 303 | +expt2.instrument.calib_d_to_tof_offset.free = True |
| 304 | +expt2.peak.broad_gauss_sigma_1.free = True |
| 305 | +expt2.peak.broad_gauss_sigma_2.free = True |
| 306 | +expt2.peak.broad_mix_beta_0.free = True |
| 307 | +expt2.peak.broad_mix_beta_1.free = True |
| 308 | +expt2.peak.asym_alpha_0.free = True |
| 309 | +expt2.peak.asym_alpha_1.free = True |
| 310 | + |
332 | 311 | # %% [markdown]
|
333 | 312 | # Show free parameters after selection.
|
334 | 313 |
|
|
345 | 324 | # #### Plot Measured vs Calculated
|
346 | 325 |
|
347 | 326 | # %%
|
348 |
| -project.plot_meas_vs_calc(expt_name='wish', |
| 327 | +project.plot_meas_vs_calc(expt_name='wish_5_6', |
349 | 328 | show_residual=True)
|
350 | 329 |
|
351 | 330 | # %%
|
352 |
| -project.plot_meas_vs_calc(expt_name='wish', |
353 |
| - x_min=37000, x_max=40000, |
| 331 | +project.plot_meas_vs_calc(expt_name='wish_4_7', |
354 | 332 | show_residual=True)
|
355 | 333 |
|
356 | 334 | # %% [markdown]
|
|
0 commit comments