|
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