Structure Refinement: LMO, ECHIDNA¶
This example refines an LMO structure with Li/Ni site mixing against constant-wavelength neutron powder diffraction data collected on the ECHIDNA diffractometer at ANSTO. The workflow starts from approximate structural and profile parameters, constrains the coupled site occupancies, and performs a Rietveld refinement.
🛠️ Import Library¶
import easydiffraction as edi
project = edi.Project(
name='lmo_echidna',
description='LMO refinement using ECHIDNA neutron powder diffraction data.',
)
Save Initial Project¶
Create the project directory before fitting so that analysis results can be written as they are produced.
project.save_as(dir_path='projects/refine-lmo-echidna')
Saving project 📦 'lmo_echidna' to '../../../projects/refine-lmo-echidna'
├── 📄 project.edi
├── 📁 structures/
├── 📁 experiments/
├── 📁 analysis/
│ └── 📄 analysis.edi
└── 📁 reports/
└── 📄 lmo_echidna.html
🧩 Define Structure¶
The rhombohedral LMO model contains two crystallographic cation sites. Li1 and Ni1 share the site at z = 1/2, while Li2 and Ni2 share the site at z = 0. Their starting occupancies describe a small amount of Li/Ni site mixing.
Create Structure from CIF¶
Define the complete starting structure in a compact inline CIF. The hexagonal setting of space group R-3m is used, with approximate cell dimensions and oxygen z coordinate.
structure_cif = """
data_lmo
_cell.length_a 2.88
_cell.length_b 2.88
_cell.length_c 14.18
_cell.angle_alpha 90.
_cell.angle_beta 90.
_cell.angle_gamma 120.
_space_group.name_h_m "R -3 m"
_space_group.coord_system_code h
loop_
_atom_site.id
_atom_site.type_symbol
_atom_site.fract_x
_atom_site.fract_y
_atom_site.fract_z
_atom_site.occupancy
_atom_site.adp_iso
_atom_site.adp_type
O O 0. 0. 0.26 1.0000 0.94645 Biso
Ni1 Ni 0. 0. 0.5 0.0184 1.00000 Biso
Li1 Li 0. 0. 0.5 0.9816 1.00000 Biso
Li2 Li 0. 0. 0.0 0.0184 1.00000 Biso
Ni2 Ni 0. 0. 0.0 0.9816 1.00000 Biso
"""
project.structures.add_from_cif_str(structure_cif)
project.structures.show_names()
Defined structures 🧩
['lmo']
Use a short alias to access the structure parameters below.
structure = project.structures['lmo']
Display Structure¶
Inspect the structure as text and as an interactive crystal model.
structure.show_as_text()
Structure 🧩 'lmo' as text
| Edi | |
|---|---|
| 1 | data_lmo |
| 2 | |
| 3 | _cell.length_a 2.88 |
| 4 | _cell.length_b 2.88 |
| 5 | _cell.length_c 14.18 |
| 6 | _cell.angle_alpha 90. |
| 7 | _cell.angle_beta 90. |
| 8 | _cell.angle_gamma 120. |
| 9 | |
| 10 | _space_group.name_h_m "R -3 m" |
| 11 | _space_group.coord_system_code h |
| 12 | |
| 13 | _geom.min_bond_distance_cutoff 0. |
| 14 | _geom.bond_distance_inc 0.25 |
| 15 | |
| 16 | loop_ |
| 17 | _atom_site.id |
| 18 | _atom_site.type_symbol |
| 19 | _atom_site.fract_x |
| 20 | _atom_site.fract_y |
| 21 | _atom_site.fract_z |
| 22 | _atom_site.wyckoff_letter |
| 23 | _atom_site.multiplicity |
| 24 | _atom_site.occupancy |
| 25 | _atom_site.adp_iso |
| 26 | _atom_site.adp_type |
| 27 | O O 0. 0. 0.26 c 6 1. 0.94645 Biso |
| 28 | Ni1 Ni 0. 0. 0.5 b 3 0.0184 1. Biso |
| 29 | Li1 Li 0. 0. 0.5 b 3 0.9816 1. Biso |
| 30 | Li2 Li 0. 0. 0. a 3 0.0184 1. Biso |
| 31 | Ni2 Ni 0. 0. 0. a 3 0.9816 1. Biso |
project.display.structure(struct_name='lmo')
Structure 🧩 'lmo' (Atom view type: 'covalent')
wheel = zoom
right-drag = pan
🔬 Define Experiment¶
Load the measured pattern, choose the calculation engine, configure the instrument and peak profile, and link the structure to the data.
Download Data¶
Download the LMO pattern from the EasyDiffraction online data repository. The columns contain 2-theta, intensity, and the standard uncertainty of the measured intensity.
data_path = edi.download_data('meas-lmo-echidna', destination='data')
Getting data...
Data 'meas-lmo-echidna': LMO, ECHIDNA (ANSTO), wavelength 1.6215 A
✅ Data 'meas-lmo-echidna' downloaded to '../../../data/meas-lmo-echidna.dat'
Create Experiment¶
project.experiments.add_from_data_path(
name='echidna',
data_path=data_path,
sample_form='powder',
beam_mode='constant wavelength',
radiation_probe='neutron',
)
Data loaded successfully
Experiment 🔬 'echidna'. Number of data points: 3200.
Use a short alias to access the experiment parameters below.
experiment = project.experiments['echidna']
Select Calculator¶
Use the CrysFML calculation engine for this refinement.
experiment.calculator.show_supported()
Calculator types
| Type | Description | ||
|---|---|---|---|
| 1 | crysfml | CrysFML library for crystallographic calculations | |
| 2 | * | cryspy | CrysPy library for crystallographic calculations |
experiment.calculator.type = 'crysfml'
Calculator for experiment 'echidna' changed to
crysfml
Set Instrument¶
Set the measured neutron wavelength and approximate calibration corrections for the 2-theta zero, sample displacement, and sample transparency.
experiment.instrument.setup_wavelength = 1.6215
experiment.instrument.calib_twotheta_offset = 0.0
experiment.instrument.calib_sample_displacement = 0.03
experiment.instrument.calib_sample_transparency = 0.02
Set Peak Profile¶
Select the Thompson-Cox-Hastings pseudo-Voigt profile. U, V, and W define its Gaussian broadening; Y defines its Lorentzian broadening; and the Finger-Cox-Jephcoat terms describe the low-angle asymmetry.
experiment.peak.show_supported()
Peak types
| Type | Description | ||
|---|---|---|---|
| 1 | * | pseudo-voigt | CWL pseudo-Voigt profile |
| 2 | thompson-cox-hastings | CWL Thompson-Cox-Hastings profile with FCJ asymmetry correction. |
experiment.peak.type = 'thompson-cox-hastings'
⚠️ Switching peak profile type adds these settings with defaults: • asym_fcj_1=0.0 • asym_fcj_2=0.0
Peak profile type for experiment 'echidna' changed to
thompson-cox-hastings
experiment.peak.broad_gauss_u = 0.1
experiment.peak.broad_gauss_v = -0.3
experiment.peak.broad_gauss_w = 0.4
experiment.peak.broad_lorentz_y = 0.1
experiment.peak.asym_fcj_1 = 0.08
experiment.peak.asym_fcj_2 = 0.08
Set Absorption¶
Apply the Hewat cylindrical-sample absorption correction with an approximate value of the dimensionless absorption-radius product.
experiment.absorption.type = 'cylinder-hewat'
experiment.absorption.mu_r = 0.3
Absorption type changed to
cylinder-hewat
Set Excluded Regions¶
Exclude the low- and high-angle regions outside the useful measured range from 12 to 162 degrees.
experiment.excluded_regions.create(id='1', start=0.0, end=12.0)
experiment.excluded_regions.create(id='2', start=162.0, end=180.0)
Set Background¶
Estimate initial background points from the measured pattern.
experiment.background.show_supported()
Background types
| Type | Description | ||
|---|---|---|---|
| 1 | chebyshev | Chebyshev polynomial background | |
| 2 | * | line-segment | Linear interpolation between points |
experiment.background.auto_estimate()
experiment.background.show()
Line-segment background points
| Position | Intensity | |
|---|---|---|
| 1 | 12.02420 | 558.74541 |
| 2 | 20.03970 | 640.62497 |
| 3 | 32.05130 | 497.74000 |
| 4 | 39.42070 | 641.87000 |
| 5 | 58.71960 | 553.94103 |
| 6 | 93.37010 | 550.51000 |
| 7 | 149.84400 | 653.58448 |
| 8 | 161.99680 | 772.38099 |
Set Linked Structure¶
Link the LMO model to the experiment and provide an initial estimate for its scale factor.
experiment.linked_structures.create(structure_id='lmo', scale=10.0)
Inspect Experiment¶
Display the configured experiment as text.
experiment.show_as_text()
Experiment 🔬 'echidna' as text
| Edi | |
|---|---|
| 1 | data_echidna |
| 2 | |
| 3 | _experiment_type.sample_form powder |
| 4 | _experiment_type.beam_mode "constant wavelength" |
| 5 | _experiment_type.radiation_probe neutron |
| 6 | _experiment_type.scattering_type bragg |
| 7 | |
| 8 | _diffrn.ambient_temperature ? |
| 9 | _diffrn.ambient_pressure ? |
| 10 | _diffrn.ambient_magnetic_field ? |
| 11 | _diffrn.ambient_electric_field ? |
| 12 | |
| 13 | _calculator.type crysfml |
| 14 | |
| 15 | _peak.asym_fcj_1 0.08 |
| 16 | _peak.asym_fcj_2 0.08 |
| 17 | _peak.broad_gauss_u 0.1 |
| 18 | _peak.broad_gauss_v -0.3 |
| 19 | _peak.broad_gauss_w 0.4 |
| 20 | _peak.broad_lorentz_x 0. |
| 21 | _peak.broad_lorentz_y 0.1 |
| 22 | _peak.cutoff_fwhm 0. |
| 23 | _peak.type cwl-thompson-cox-hastings |
| 24 | |
| 25 | _instrument.setup_wavelength 1.6215 |
| 26 | _instrument.setup_wavelength_2 0. |
| 27 | _instrument.setup_wavelength_2_to_1_ratio 0. |
| 28 | _instrument.calib_twotheta_offset 0. |
| 29 | _instrument.calib_sample_displacement 0.03 |
| 30 | _instrument.calib_sample_transparency 0.02 |
| 31 | |
| 32 | _absorption.type cylinder-hewat |
| 33 | _absorption.mu_r 0.3 |
| 34 | |
| 35 | loop_ |
| 36 | _linked_structure.structure_id |
| 37 | _linked_structure.scale |
| 38 | lmo 10. |
| 39 | |
| 40 | loop_ |
| 41 | _excluded_region.id |
| 42 | _excluded_region.start |
| 43 | _excluded_region.end |
| 44 | 1 0. 12. |
| 45 | 2 162. 180. |
| 46 | |
| 47 | _background.type line-segment |
| 48 | |
| 49 | loop_ |
| 50 | _background.id |
| 51 | _background.position |
| 52 | _background.intensity |
| 53 | 1 12.0242 558.74540525 |
| 54 | 2 20.0397 640.62496987 |
| 55 | 3 32.0513 497.74 |
| 56 | 4 39.4207 641.87 |
| 57 | 5 58.7196 553.94102828 |
| 58 | 6 93.3701 550.51 |
| 59 | 7 149.844 653.58448376 |
| 60 | 8 161.9968 772.38098901 |
| 61 | |
| 62 | loop_ |
| 63 | _data.two_theta |
| 64 | _data.id |
| 65 | _data.d_spacing |
| 66 | _data.intensity_meas |
| 67 | _data.intensity_meas_su |
| 68 | _data.intensity_calc |
| 69 | _data.intensity_bkg |
| 70 | _data.calc_status |
| 71 | 4.0138 1 0. 73.54 11.06927 0. 0. excl |
| 72 | 4.0639 2 0. 76.08 11.30158 0. 0. excl |
| 73 | 4.1139 3 0. 69.48 10.74801 0. 0. excl |
| 74 | 4.164 4 0. 73.23 11.00793 0. 0. excl |
| 75 | 4.2139 5 0. 87.95 12.11325 0. 0. excl |
| 76 | 4.2638 6 0. 103.51 13.09452 0. 0. excl |
| 77 | 4.3139 7 0. 134.34 14.94499 0. 0. excl |
| 78 | 4.3639 8 0. 158.84 16.27419 0. 0. excl |
| 79 | 4.4139 9 0. 157.33 16.2141 0. 0. excl |
| 80 | 4.4639 10 0. 185.27 17.68956 0. 0. excl |
| 81 | ... |
| 82 | 163.4564 3191 0. 1063.71 69.45311 0. 0. excl |
| 83 | 163.5065 3192 0. 981.95 66.61054 0. 0. excl |
| 84 | 163.5566 3193 0. 959.97 65.18457 0. 0. excl |
| 85 | 163.6065 3194 0. 1116.65 71.63894 0. 0. excl |
| 86 | 163.6565 3195 0. 1014.94 67.92402 0. 0. excl |
| 87 | 163.7066 3196 0. 1106.06 70.89243 0. 0. excl |
| 88 | 163.7566 3197 0. 1219.54 75.04669 0. 0. excl |
| 89 | 163.8065 3198 0. 1272.44 76.11867 0. 0. excl |
| 90 | 163.8565 3199 0. 1239.6 75.53265 0. 0. excl |
| 91 | 163.9066 3200 0. 1262.89 76.04648 0. 0. excl |
project.display.pattern(expt_name='echidna')
Set Constraints¶
First create readable aliases for the displacement and occupancy parameters involved in the constraints.
project.analysis.aliases.create(
id='biso_Li1',
param=structure.atom_sites['Li1'].adp_iso,
)
project.analysis.aliases.create(
id='biso_Li2',
param=structure.atom_sites['Li2'].adp_iso,
)
project.analysis.aliases.create(
id='biso_Ni1',
param=structure.atom_sites['Ni1'].adp_iso,
)
project.analysis.aliases.create(
id='biso_Ni2',
param=structure.atom_sites['Ni2'].adp_iso,
)
project.analysis.aliases.create(
id='occ_Li1',
param=structure.atom_sites['Li1'].occupancy,
)
project.analysis.aliases.create(
id='occ_Li2',
param=structure.atom_sites['Li2'].occupancy,
)
project.analysis.aliases.create(
id='occ_Ni1',
param=structure.atom_sites['Ni1'].occupancy,
)
project.analysis.aliases.create(
id='occ_Ni2',
param=structure.atom_sites['Ni2'].occupancy,
)
Atoms sharing a crystallographic site use the same Biso value. The
occupancy constraints keep each shared site fully occupied and couple
the same Li/Ni exchange fraction across both sites. Consequently,
occ_Li1 is the only independent occupancy parameter.
project.analysis.constraints.create(
id='1',
expression='biso_Ni1 = biso_Li1',
)
project.analysis.constraints.create(
id='2',
expression='biso_Li2 = biso_Ni2',
)
project.analysis.constraints.create(
id='3',
expression='occ_Ni1 = 1 - occ_Li1',
)
project.analysis.constraints.create(
id='4',
expression='occ_Li2 = 1 - occ_Li1',
)
project.analysis.constraints.create(
id='5',
expression='occ_Ni2 = occ_Li1',
)
project.analysis.constraints.show()
User defined constraints
| id | expression | |
|---|---|---|
| 1 | 1 | biso_Ni1 = biso_Li1 |
| 2 | 2 | biso_Li2 = biso_Ni2 |
| 3 | 3 | occ_Ni1 = 1 - occ_Li1 |
| 4 | 4 | occ_Li2 = 1 - occ_Li1 |
| 5 | 5 | occ_Ni2 = occ_Li1 |
Constraints enabled: True
Set Free Parameters¶
Refine the two independent cell lengths, oxygen z coordinate, the two independent cation Biso values, and the independent Li occupancy.
structure.cell.length_a.free = True
structure.cell.length_c.free = True
structure.atom_sites['O'].fract_z.free = True
structure.atom_sites['Li1'].adp_iso.free = True
structure.atom_sites['Ni2'].adp_iso.free = True
structure.atom_sites['Li1'].occupancy.free = True
Refine the scale, instrument calibration terms, U/V/W/Y profile terms, and active background-point intensities. The asymmetry and absorption parameters remain fixed at their approximate values.
experiment.linked_structures['lmo'].scale.free = True
experiment.instrument.calib_twotheta_offset.free = True
experiment.instrument.calib_sample_displacement.free = True
experiment.instrument.calib_sample_transparency.free = True
experiment.peak.broad_gauss_u.free = True
experiment.peak.broad_gauss_v.free = True
experiment.peak.broad_gauss_w.free = True
experiment.peak.broad_lorentz_y.free = True
for point in experiment.background:
point.intensity.free = True
Display all parameters selected for refinement.
project.display.parameters.free()
Free parameters for both structures (🧩 data blocks) and experiments (🔬 data blocks)
| datablock | category | entry | parameter | value | uncertainty | min | max | units | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | lmo | cell | length_a | 2.88000 | -inf | inf | Å | ||
| 2 | lmo | cell | length_c | 14.18000 | -inf | inf | Å | ||
| 3 | lmo | atom_site | O | fract_z | 0.26000 | -inf | inf | ||
| 4 | lmo | atom_site | Li1 | occupancy | 0.98160 | -inf | inf | ||
| 5 | lmo | atom_site | Li1 | adp_iso | 1.00000 | -inf | inf | Ų | |
| 6 | lmo | atom_site | Ni2 | adp_iso | 1.00000 | -inf | inf | Ų | |
| 7 | echidna | linked_structure | lmo | scale | 10.00000 | -inf | inf | ||
| 8 | echidna | peak | broad_gauss_u | 0.10000 | -inf | inf | deg² | ||
| 9 | echidna | peak | broad_gauss_v | -0.30000 | -inf | inf | deg² | ||
| 10 | echidna | peak | broad_gauss_w | 0.40000 | -inf | inf | deg² | ||
| 11 | echidna | peak | broad_lorentz_y | 0.10000 | -inf | inf | deg | ||
| 12 | echidna | instrument | twotheta_offset | 0.00000 | -inf | inf | deg | ||
| 13 | echidna | instrument | sample_displacement | 0.03000 | -inf | inf | deg | ||
| 14 | echidna | instrument | sample_transparency | 0.02000 | -inf | inf | deg | ||
| 15 | echidna | background | 1 | intensity | 558.74541 | -inf | inf | ||
| 16 | echidna | background | 2 | intensity | 640.62497 | -inf | inf | ||
| 17 | echidna | background | 3 | intensity | 497.74000 | -inf | inf | ||
| 18 | echidna | background | 4 | intensity | 641.87000 | -inf | inf | ||
| 19 | echidna | background | 5 | intensity | 553.94103 | -inf | inf | ||
| 20 | echidna | background | 6 | intensity | 550.51000 | -inf | inf | ||
| 21 | echidna | background | 7 | intensity | 653.58448 | -inf | inf | ||
| 22 | echidna | background | 8 | intensity | 772.38099 | -inf | inf |
Select Minimizer¶
Use the Levenberg-Marquardt optimizer provided by Bumps.
project.analysis.minimizer.show_supported()
Minimizer types
| Type | Description | ||
|---|---|---|---|
| 1 | bumps | BUMPS library using the default Levenberg-Marquardt method | |
| 2 | bumps (amoeba) | BUMPS library with Nelder-Mead simplex method | |
| 3 | bumps (de) | BUMPS library with differential evolution method | |
| 4 | bumps (dream) | BUMPS library with DREAM Bayesian sampling | |
| 5 | bumps (lm) | BUMPS library with Levenberg-Marquardt method | |
| 6 | dfols | DFO-LS library for derivative-free least-squares optimization | |
| 7 | emcee | emcee affine-invariant ensemble Bayesian sampling | |
| 8 | lmfit | LMFIT library using the default Levenberg-Marquardt method | |
| 9 | lmfit (least_squares) | LMFIT library with SciPy's trust region reflective algorithm | |
| 10 | * | lmfit (leastsq) | LMFIT library with Levenberg-Marquardt least squares method |
project.analysis.minimizer.type = 'bumps (lm)'
Current minimizer changed to
bumps (lm)
Fit Model¶
project.analysis.fit()
Standard fitting
📋 Using experiment 🔬 'echidna' for 'single' fitting
🚀 Starting fit process with 'bumps (lm)'...
📈 Goodness-of-fit progress:
| iteration | time (s) | χ² | change / status | |
|---|---|---|---|---|
| 1 | 1 | 0.37 | 84.57 | |
| 2 | 24 | 6.38 | 57.98 | 31.4% ↓ |
| 3 | 47 | 11.63 | 6.22 | 89.3% ↓ |
| 4 | 70 | 16.50 | 2.89 | 53.5% ↓ |
| 5 | 93 | 21.35 | 2.44 | 15.5% ↓ |
| 6 | 116 | 26.14 | 2.41 | 1.2% ↓ |
| 7 | 162 | 35.73 | 2.41 | |
| 8 | 208 | 45.32 | 2.41 | |
| 9 | 232 | 50.34 | 2.41 | |
| 10 | 278 | 59.94 | 2.41 | |
| 11 | 302 | 65.06 | 2.41 | |
| 12 | 328 | 82.74 | 2.41 |
🏆 Best goodness-of-fit (reduced χ²) is 2.41 at iteration 302
✅ Fitting complete.
Saving project 📦 'lmo_echidna' to '../../../projects/refine-lmo-echidna'
├── 📄 project.edi
├── 📁 structures/
│ └── 📄 lmo.edi
├── 📁 experiments/
│ └── 📄 echidna.edi
├── 📁 analysis/
│ └── 📄 analysis.edi
└── 📁 reports/
└── 📄 lmo_echidna.html
Inspect Results¶
Review the fit statistics, refined parameters, and parameter correlations, then compare the refined calculation with the data.
project.display.fit.results()
⚙️ Settings used:
| Name | Value | Description | |
|---|---|---|---|
| 1 | max_iterations | 1000 | Maximum solver iterations. |
📋 Least-squares fit results:
| Metric | Value | |
|---|---|---|
| 1 | 🧪 Minimizer | bumps (lm) |
| 2 | ✅ Overall status | success |
| 3 | ⏱️ Fitting time (seconds) | 82.74 |
| 4 | 📏 Goodness-of-fit (reduced χ²) | 2.41 |
| 5 | 📏 R-factor (Rf, %) | 3.94 |
| 6 | 📏 R-factor squared (Rf², %) | 4.50 |
| 7 | 📏 Weighted R-factor (wR, %) | 4.29 |
📈 Refined parameters:
| datablock | category | entry | parameter | units | start | value | s.u. | change | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | lmo | cell | length_a | Å | 2.8800 | 2.8752 | 0.0001 | 0.17 % ↓ | |
| 2 | lmo | cell | length_c | Å | 14.1800 | 14.1835 | 0.0004 | 0.02 % ↑ | |
| 3 | lmo | atom_site | O | fract_z | 0.2600 | 0.2591 | 0.0001 | 0.36 % ↓ | |
| 4 | lmo | atom_site | Li1 | occupancy | 0.9816 | 0.9804 | 0.0018 | 0.12 % ↓ | |
| 5 | lmo | atom_site | Li1 | adp_iso | Ų | 1.0000 | 1.9540 | 0.1093 | 95.40 % ↑ |
| 6 | lmo | atom_site | Ni2 | adp_iso | Ų | 1.0000 | 0.2274 | 0.0118 | 77.26 % ↓ |
| 7 | echidna | linked_structure | lmo | scale | 10.0000 | 15.9990 | 0.0841 | 59.99 % ↑ | |
| 8 | echidna | peak | broad_gauss_u | deg² | 0.1000 | 0.0972 | 0.0023 | 2.84 % ↓ | |
| 9 | echidna | peak | broad_gauss_v | deg² | -0.3000 | -0.2842 | 0.0066 | 5.26 % ↓ | |
| 10 | echidna | peak | broad_gauss_w | deg² | 0.4000 | 0.4036 | 0.0052 | 0.91 % ↑ | |
| 11 | echidna | peak | broad_lorentz_y | deg | 0.1000 | 0.0806 | 0.0021 | 19.35 % ↓ | |
| 12 | echidna | instrument | twotheta_offset | deg | 0.0000 | -0.0640 | 0.0072 | N/A | |
| 13 | echidna | instrument | sample_displacement | deg | 0.0300 | 0.0270 | 0.0042 | 10.07 % ↓ | |
| 14 | echidna | instrument | sample_transparency | deg | 0.0200 | 0.0176 | 0.0054 | 12.24 % ↓ | |
| 15 | echidna | background | 1 | intensity | 558.7454 | 548.6774 | 5.5305 | 1.80 % ↓ | |
| 16 | echidna | background | 2 | intensity | 640.6250 | 564.8788 | 4.4804 | 11.82 % ↓ | |
| 17 | echidna | background | 3 | intensity | 497.7400 | 528.5260 | 3.8135 | 6.19 % ↑ | |
| 18 | echidna | background | 4 | intensity | 641.8700 | 584.0418 | 3.5967 | 9.01 % ↓ | |
| 19 | echidna | background | 5 | intensity | 553.9410 | 568.5889 | 2.4646 | 2.64 % ↑ | |
| 20 | echidna | background | 6 | intensity | 550.5100 | 574.2245 | 1.9936 | 4.31 % ↑ | |
| 21 | echidna | background | 7 | intensity | 653.5845 | 644.2330 | 2.7590 | 1.43 % ↓ | |
| 22 | echidna | background | 8 | intensity | 772.3810 | 631.4711 | 6.2037 | 18.24 % ↓ |
• value = refined value from least-squares minimization
• s.u. = standard uncertainty (one sigma), from the covariance matrix
• change = relative change from start, in %; ↑ = increase, ↓ = decrease
project.display.fit.correlations()
project.display.pattern(expt_name='echidna')
💾 Save Project¶
Save the refined parameters and analysis results in the project directory created near the beginning of the tutorial.
project.save()
Saving project 📦 'lmo_echidna' to '../../../projects/refine-lmo-echidna'
├── 📄 project.edi
├── 📁 structures/
│ └── 📄 lmo.edi
├── 📁 experiments/
│ └── 📄 echidna.edi
├── 📁 analysis/
│ └── 📄 analysis.edi
└── 📁 reports/
└── 📄 lmo_echidna.html