-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathed-10.py
More file actions
91 lines (73 loc) · 2.12 KB
/
Copy pathed-10.py
File metadata and controls
91 lines (73 loc) · 2.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
# %% [markdown]
# # Pair Distribution Function: Ni, NPD
#
# This example demonstrates a pair distribution function (PDF) analysis
# of Ni, based on data collected from a constant wavelength neutron
# powder diffraction experiment.
#
# The dataset is taken from:
# https://github.com/diffpy/cmi_exchange/tree/main/cmi_scripts/fitNiPDF
# %% [markdown]
# ## Import Library
# %%
import easydiffraction as ed
# %% [markdown]
# ## Create Project
# %%
project = ed.Project()
# %% [markdown]
# ## Add Structure
# %%
project.structures.create(name='ni')
# %%
project.structures['ni'].space_group.name_h_m = 'F m -3 m'
project.structures['ni'].space_group.it_coordinate_system_code = '1'
project.structures['ni'].cell.length_a = 3.52387
project.structures['ni'].atom_sites.create(
label='Ni',
type_symbol='Ni',
fract_x=0.0,
fract_y=0.0,
fract_z=0.0,
wyckoff_letter='a',
adp_iso=0.5,
)
# %% [markdown]
# ## Add Experiment
# %%
data_path = ed.download_data(id=6, destination='data')
# %%
project.experiments.add_from_data_path(
name='pdf',
data_path=data_path,
sample_form='powder',
beam_mode='constant wavelength',
radiation_probe='neutron',
scattering_type='total',
)
# %%
project.experiments['pdf'].linked_phases.create(id='ni', scale=1.0)
project.experiments['pdf'].peak.damp_q = 0
project.experiments['pdf'].peak.broad_q = 0.03
project.experiments['pdf'].peak.cutoff_q = 27.0
project.experiments['pdf'].peak.sharp_delta_1 = 0.0
project.experiments['pdf'].peak.sharp_delta_2 = 2.0
project.experiments['pdf'].peak.damp_particle_diameter = 0
# %% [markdown]
# ## Select Fitting Parameters
# %%
project.structures['ni'].cell.length_a.free = True
project.structures['ni'].atom_sites['Ni'].adp_iso.free = True
# %%
project.experiments['pdf'].linked_phases['ni'].scale.free = True
project.experiments['pdf'].peak.broad_q.free = True
project.experiments['pdf'].peak.sharp_delta_2.free = True
# %% [markdown]
# ## Run Fitting
# %%
project.analysis.fit()
project.analysis.display.fit_results()
# %% [markdown]
# ## Plot Measured vs Calculated
# %%
project.plotter.plot_meas_vs_calc(expt_name='pdf', show_residual=True)