Structure Refinement: Tb2TiO7, HEiDi¶
Crystal structure refinement of Tb2TiO7 using single crystal neutron diffraction data from HEiDi at FRM II.
🛠️ Import Library¶
In [2]:
Copied!
import easydiffraction as ed
import easydiffraction as ed
📦 Define Project¶
In [3]:
Copied!
# Create a minimal project with a short name
project = ed.Project(name='tbti_heidi')
project.info.title = 'Tb2Ti2O7 at HEiDi@FRMII'
project.info.description = """This project demonstrates a standard
refinement of the crystal structure of Tb2Ti2O7 using single crystal
neutron diffraction data from HEiDi at FRM II."""
project.save_as(dir_path='projects/ed_14_tbti_heidi')
# Create a minimal project with a short name
project = ed.Project(name='tbti_heidi')
project.info.title = 'Tb2Ti2O7 at HEiDi@FRMII'
project.info.description = """This project demonstrates a standard
refinement of the crystal structure of Tb2Ti2O7 using single crystal
neutron diffraction data from HEiDi at FRM II."""
project.save_as(dir_path='projects/ed_14_tbti_heidi')
Saving project 📦 'tbti_heidi' to '../../../projects/ed_14_tbti_heidi'
├── 📄 project.cif
├── 📁 structures/
├── 📁 experiments/
├── 📁 analysis/
│ └── 📄 analysis.cif
└── 📁 reports/
└── 📄 tbti_heidi.html
🧩 Define Structure¶
In [4]:
Copied!
# Download CIF file from repository
structure_path = ed.download_data(id=20, destination='data')
# Download CIF file from repository
structure_path = ed.download_data(id=20, destination='data')
Getting data...
Data #20: Tb2Ti2O7 (crystal structure)
✅ Data #20 downloaded to '../../../data/ed-20.cif'
In [5]:
Copied!
project.structures.add_from_cif_path(structure_path)
project.structures.add_from_cif_path(structure_path)
In [6]:
Copied!
project.structures.show_names()
project.structures.show_names()
Defined structures 🧩
['tbti']
In [7]:
Copied!
structure = project.structures['tbti']
structure = project.structures['tbti']
In [8]:
Copied!
structure.show_as_cif()
structure.show_as_cif()
Structure 🧩 'tbti' as cif
| CIF | |
|---|---|
| 1 | data_tbti |
| 2 | |
| 3 | _cell.length_a 10.13 |
| 4 | _cell.length_b 10.13 |
| 5 | _cell.length_c 10.13 |
| 6 | _cell.angle_alpha 90. |
| 7 | _cell.angle_beta 90. |
| 8 | _cell.angle_gamma 90. |
| 9 | |
| 10 | _space_group.name_H-M_alt "F d -3 m" |
| 11 | _space_group.IT_coordinate_system_code 2 |
| 12 | |
| 13 | _geom.min_bond_distance_cutoff 0. |
| 14 | _geom.bond_distance_incr 0.25 |
| 15 | |
| 16 | loop_ |
| 17 | _atom_site.label |
| 18 | _atom_site.type_symbol |
| 19 | _atom_site.fract_x |
| 20 | _atom_site.fract_y |
| 21 | _atom_site.fract_z |
| 22 | _atom_site.Wyckoff_symbol |
| 23 | _atom_site.site_symmetry_multiplicity |
| 24 | _atom_site.occupancy |
| 25 | _atom_site.B_iso_or_equiv |
| 26 | _atom_site.ADP_type |
| 27 | Tb Tb 0.5 0.5 0.5 d 16 1. 0.530(20) Biso |
| 28 | Ti Ti 0. 0. 0. c 16 1. 0.480(30) Biso |
| 29 | O1 O 0.328040(90) 0.125 0.125 f 48 1.000(10) 0.450(20) Biso |
| 30 | O2 O 0.375 0.375 0.375 b 8 0.970(20) 0.230(40) Biso |
In [9]:
Copied!
structure.atom_sites['Tb'].adp_type = 'Uiso'
structure.atom_sites['Ti'].adp_type = 'Uiso'
structure.atom_sites['O1'].adp_type = 'Uiso'
structure.atom_sites['O2'].adp_type = 'Uiso'
structure.atom_sites['Tb'].adp_type = 'Uiso'
structure.atom_sites['Ti'].adp_type = 'Uiso'
structure.atom_sites['O1'].adp_type = 'Uiso'
structure.atom_sites['O2'].adp_type = 'Uiso'
In [10]:
Copied!
print(structure.atom_sites.as_cif)
print(structure.atom_sites.as_cif)
loop_ _atom_site.label _atom_site.type_symbol _atom_site.fract_x _atom_site.fract_y _atom_site.fract_z _atom_site.Wyckoff_symbol _atom_site.site_symmetry_multiplicity _atom_site.occupancy _atom_site.U_iso_or_equiv _atom_site.ADP_type Tb Tb 0.5 0.5 0.5 d 16 1. 0.007(20) Uiso Ti Ti 0. 0. 0. c 16 1. 0.006(30) Uiso O1 O 0.328040(90) 0.125 0.125 f 48 1.000(10) 0.006(20) Uiso O2 O 0.375 0.375 0.375 b 8 0.970(20) 0.003(40) Uiso
In [11]:
Copied!
structure.atom_sites['Tb'].adp_iso = 0.0
structure.atom_sites['Ti'].adp_iso = 0.0
structure.atom_sites['O1'].adp_iso = 0.0
structure.atom_sites['O2'].adp_iso = 0.0
structure.atom_sites['Tb'].adp_iso = 0.0
structure.atom_sites['Ti'].adp_iso = 0.0
structure.atom_sites['O1'].adp_iso = 0.0
structure.atom_sites['O2'].adp_iso = 0.0
Display Structure (ADP)¶
Select the ADP atom view. With the starting isotropic displacements every atom is drawn as a sphere; after the anisotropic refinement below, the same view will draw probability ellipsoids for the anisotropic sites.
In [12]:
Copied!
project.structure_style.atom_view = 'adp'
project.structure_style.atom_view = 'adp'
In [13]:
Copied!
project.display.structure(struct_name='tbti')
project.display.structure(struct_name='tbti')
Structure 🧩 'tbti' (Atom view type: 'adp')
Loading plot…
drag = rotate
wheel = zoom
right-drag = pan
wheel = zoom
right-drag = pan
🔬 Define Experiment¶
In [14]:
Copied!
# Download data file from repository
data_path = ed.download_data(id=19, destination='data')
# Download data file from repository
data_path = ed.download_data(id=19, destination='data')
Getting data...
Data #19: Tb2Ti2O7, HEiDi (MLZ)
✅ Data #19 downloaded to '../../../data/ed-19.xye'
In [15]:
Copied!
project.experiments.add_from_data_path(
name='heidi',
data_path=data_path,
sample_form='single crystal',
beam_mode='constant wavelength',
radiation_probe='neutron',
)
project.experiments.add_from_data_path(
name='heidi',
data_path=data_path,
sample_form='single crystal',
beam_mode='constant wavelength',
radiation_probe='neutron',
)
Data loaded successfully
Experiment 🔬 'heidi'. Number of data points: 220.
In [16]:
Copied!
experiment = project.experiments['heidi']
experiment = project.experiments['heidi']
In [17]:
Copied!
experiment.linked_crystal.id = 'tbti'
experiment.linked_crystal.scale = 1.0
experiment.linked_crystal.id = 'tbti'
experiment.linked_crystal.scale = 1.0
In [18]:
Copied!
experiment.instrument.setup_wavelength = 0.793
experiment.instrument.setup_wavelength = 0.793
In [19]:
Copied!
experiment.extinction.mosaicity = 35000
experiment.extinction.radius = 10
experiment.extinction.mosaicity = 35000
experiment.extinction.radius = 10
🚀 Perform Analysis¶
ADP iso¶
In [20]:
Copied!
project.display.pattern(expt_name='heidi')
project.display.pattern(expt_name='heidi')
Loading plot…
In [21]:
Copied!
structure.atom_sites['O1'].fract_x.free = True
structure.atom_sites['Ti'].occupancy.free = True
structure.atom_sites['O1'].occupancy.free = True
structure.atom_sites['O2'].occupancy.free = True
structure.atom_sites['Tb'].adp_iso.free = True
structure.atom_sites['Ti'].adp_iso.free = True
structure.atom_sites['O1'].adp_iso.free = True
structure.atom_sites['O2'].adp_iso.free = True
structure.atom_sites['O1'].fract_x.free = True
structure.atom_sites['Ti'].occupancy.free = True
structure.atom_sites['O1'].occupancy.free = True
structure.atom_sites['O2'].occupancy.free = True
structure.atom_sites['Tb'].adp_iso.free = True
structure.atom_sites['Ti'].adp_iso.free = True
structure.atom_sites['O1'].adp_iso.free = True
structure.atom_sites['O2'].adp_iso.free = True
In [22]:
Copied!
experiment.linked_crystal.scale.free = True
experiment.extinction.radius.free = True
experiment.linked_crystal.scale.free = True
experiment.extinction.radius.free = True
In [23]:
Copied!
# Start refinement. All parameters, which have standard uncertainties
# in the input CIF files, are refined by default.
project.analysis.fit()
# Start refinement. All parameters, which have standard uncertainties
# in the input CIF files, are refined by default.
project.analysis.fit()
Standard fitting
📋 Using experiment 🔬 'heidi' for 'single' fitting
🚀 Starting fit process with 'lmfit (leastsq)'...
📈 Goodness-of-fit progress:
| iteration | time (s) | χ² | change / status | |
|---|---|---|---|---|
| 1 | 1 | 0.05 | 355.79 | |
| 2 | 14 | 0.65 | 186.41 | 47.6% ↓ |
| 3 | 25 | 1.14 | 42.28 | 77.3% ↓ |
| 4 | 36 | 1.65 | 12.97 | 69.3% ↓ |
| 5 | 47 | 2.14 | 12.75 | 1.6% ↓ |
| 6 | 81 | 3.70 | 12.75 |
🏆 Best goodness-of-fit (reduced χ²) is 12.75 at iteration 80
✅ Fitting complete.
Saving project 📦 'tbti_heidi' to '../../../projects/ed_14_tbti_heidi'
├── 📄 project.cif
├── 📁 structures/
│ └── 📄 tbti.cif
├── 📁 experiments/
│ └── 📄 heidi.cif
├── 📁 analysis/
│ └── 📄 analysis.cif
└── 📁 reports/
└── 📄 tbti_heidi.html
In [24]:
Copied!
# Show fit results summary
project.display.fit.results()
# Show fit results summary
project.display.fit.results()
⚙️ Settings used:
| Name | Value | Description | |
|---|---|---|---|
| 1 | max_iterations | 1000 | Maximum solver iterations. |
📋 Least-squares fit results:
| Metric | Value | |
|---|---|---|
| 1 | 🧪 Minimizer | lmfit (leastsq) |
| 2 | ✅ Overall status | success |
| 3 | ⏱️ Fitting time (seconds) | 3.70 |
| 4 | 🔁 Iterations | 78 |
| 5 | 📏 Goodness-of-fit (reduced χ²) | 12.75 |
| 6 | 📏 R-factor (Rf, %) | 7.65 |
| 7 | 📏 R-factor squared (Rf², %) | 8.10 |
| 8 | 📏 Weighted R-factor (wR, %) | 8.59 |
📈 Refined parameters:
| datablock | category | entry | parameter | units | start | value | s.u. | change | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | tbti | atom_site | Tb | adp_iso | Ų | 0.0000 | 0.0068 | 0.0003 | N/A |
| 2 | tbti | atom_site | Ti | occupancy | 1.0000 | 0.9730 | 0.0178 | 2.70 % ↓ | |
| 3 | tbti | atom_site | Ti | adp_iso | Ų | 0.0000 | 0.0054 | 0.0006 | N/A |
| 4 | tbti | atom_site | O1 | fract_x | 0.3280 | 0.3280 | 0.0001 | 0.00 % ↑ | |
| 5 | tbti | atom_site | O1 | occupancy | 1.0000 | 0.9989 | 0.0104 | 0.11 % ↓ | |
| 6 | tbti | atom_site | O1 | adp_iso | Ų | 0.0000 | 0.0057 | 0.0002 | N/A |
| 7 | tbti | atom_site | O2 | occupancy | 0.9700 | 0.9688 | 0.0183 | 0.12 % ↓ | |
| 8 | tbti | atom_site | O2 | adp_iso | Ų | 0.0000 | 0.0030 | 0.0005 | N/A |
| 9 | heidi | extinction | radius | μm | 10.0000 | 26.4348 | 1.0122 | 164.35 % ↑ | |
| 10 | heidi | linked_crystal | scale | 1.0000 | 2.9329 | 0.0586 | 193.29 % ↑ |
• start = parameter value before refinement
• 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
• 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
In [25]:
Copied!
structure.show_as_cif()
structure.show_as_cif()
Structure 🧩 'tbti' as cif
| CIF | |
|---|---|
| 1 | data_tbti |
| 2 | |
| 3 | _cell.length_a 10.13 |
| 4 | _cell.length_b 10.13 |
| 5 | _cell.length_c 10.13 |
| 6 | _cell.angle_alpha 90. |
| 7 | _cell.angle_beta 90. |
| 8 | _cell.angle_gamma 90. |
| 9 | |
| 10 | _space_group.name_H-M_alt "F d -3 m" |
| 11 | _space_group.IT_coordinate_system_code 2 |
| 12 | |
| 13 | _geom.min_bond_distance_cutoff 0. |
| 14 | _geom.bond_distance_incr 0.25 |
| 15 | |
| 16 | loop_ |
| 17 | _atom_site.label |
| 18 | _atom_site.type_symbol |
| 19 | _atom_site.fract_x |
| 20 | _atom_site.fract_y |
| 21 | _atom_site.fract_z |
| 22 | _atom_site.Wyckoff_symbol |
| 23 | _atom_site.site_symmetry_multiplicity |
| 24 | _atom_site.occupancy |
| 25 | _atom_site.U_iso_or_equiv |
| 26 | _atom_site.ADP_type |
| 27 | Tb Tb 0.5 0.5 0.5 d 16 1. 0.00682(29) Uiso |
| 28 | Ti Ti 0. 0. 0. c 16 0.973(18) 0.00540(60) Uiso |
| 29 | O1 O 0.328044(94) 0.125 0.125 f 48 0.999(10) 0.00573(25) Uiso |
| 30 | O2 O 0.375 0.375 0.375 b 8 0.969(18) 0.00303(48) Uiso |
In [26]:
Copied!
project.display.structure(struct_name='tbti')
project.display.structure(struct_name='tbti')
Structure 🧩 'tbti' (Atom view type: 'adp')
Loading plot…
drag = rotate
wheel = zoom
right-drag = pan
wheel = zoom
right-drag = pan
In [27]:
Copied!
project.experiments.show_names()
project.experiments.show_names()
Defined experiments 🔬
['heidi']
In [28]:
Copied!
project.display.pattern(expt_name='heidi')
project.display.pattern(expt_name='heidi')
Loading plot…
ADP aniso¶
In [29]:
Copied!
structure.atom_sites['Tb'].adp_type = 'Uani'
structure.atom_sites['Ti'].adp_type = 'Uani'
structure.atom_sites['O1'].adp_type = 'Uani'
# structure.atom_sites['O2'].adp_type = 'Uani'
structure.atom_sites['Tb'].adp_type = 'Uani'
structure.atom_sites['Ti'].adp_type = 'Uani'
structure.atom_sites['O1'].adp_type = 'Uani'
# structure.atom_sites['O2'].adp_type = 'Uani'
In [30]:
Copied!
print(structure.atom_site_aniso.as_cif)
print(structure.atom_site_aniso.as_cif)
loop_ _atom_site_aniso.label _atom_site_aniso.U_11 _atom_site_aniso.U_22 _atom_site_aniso.U_33 _atom_site_aniso.U_12 _atom_site_aniso.U_13 _atom_site_aniso.U_23 Tb 0.00681683 0.00681683 0.00681683 0. 0. 0. Ti 0.00539742 0.00539742 0.00539742 0. 0. 0. O1 0.00572628 0.00572628 0.00572628 0. 0. 0.
In [31]:
Copied!
structure.atom_site_aniso['Tb'].adp_11.free = True
structure.atom_site_aniso['Tb'].adp_12.free = True
structure.atom_site_aniso['Ti'].adp_11.free = True
structure.atom_site_aniso['Ti'].adp_12.free = True
structure.atom_site_aniso['O1'].adp_11.free = True
structure.atom_site_aniso['O1'].adp_22.free = True
structure.atom_site_aniso['O1'].adp_23.free = True
# structure.atom_site_aniso['O2'].adp_11.free = True
structure.atom_site_aniso['Tb'].adp_11.free = True
structure.atom_site_aniso['Tb'].adp_12.free = True
structure.atom_site_aniso['Ti'].adp_11.free = True
structure.atom_site_aniso['Ti'].adp_12.free = True
structure.atom_site_aniso['O1'].adp_11.free = True
structure.atom_site_aniso['O1'].adp_22.free = True
structure.atom_site_aniso['O1'].adp_23.free = True
# structure.atom_site_aniso['O2'].adp_11.free = True
In [32]:
Copied!
project.analysis.fit()
project.analysis.fit()
Standard fitting
📋 Using experiment 🔬 'heidi' for 'single' fitting
🚀 Starting fit process with 'lmfit (leastsq)'...
📈 Goodness-of-fit progress:
| iteration | time (s) | χ² | change / status | |
|---|---|---|---|---|
| 1 | 1 | 0.34 | 13.00 | |
| 2 | 18 | 1.42 | 3.02 | 76.8% ↓ |
| 3 | 33 | 2.41 | 2.94 | 2.5% ↓ |
| 4 | 79 | 5.40 | 2.94 |
🏆 Best goodness-of-fit (reduced χ²) is 2.94 at iteration 78
✅ Fitting complete.
Saving project 📦 'tbti_heidi' to '../../../projects/ed_14_tbti_heidi'
├── 📄 project.cif
├── 📁 structures/
│ └── 📄 tbti.cif
├── 📁 experiments/
│ └── 📄 heidi.cif
├── 📁 analysis/
│ └── 📄 analysis.cif
└── 📁 reports/
└── 📄 tbti_heidi.html
In [33]:
Copied!
project.display.fit.results()
project.display.fit.results()
⚙️ Settings used:
| Name | Value | Description | |
|---|---|---|---|
| 1 | max_iterations | 1000 | Maximum solver iterations. |
📋 Least-squares fit results:
| Metric | Value | |
|---|---|---|
| 1 | 🧪 Minimizer | lmfit (leastsq) |
| 2 | ✅ Overall status | success |
| 3 | ⏱️ Fitting time (seconds) | 5.40 |
| 4 | 🔁 Iterations | 76 |
| 5 | 📏 Goodness-of-fit (reduced χ²) | 2.94 |
| 6 | 📏 R-factor (Rf, %) | 4.21 |
| 7 | 📏 R-factor squared (Rf², %) | 6.61 |
| 8 | 📏 Weighted R-factor (wR, %) | 13.29 |
📈 Refined parameters:
| datablock | category | entry | parameter | units | start | value | s.u. | change | |
|---|---|---|---|---|---|---|---|---|---|
| 1 | tbti | atom_site | Ti | occupancy | 0.9730 | 0.9661 | 0.0085 | 0.71 % ↓ | |
| 2 | tbti | atom_site | O1 | fract_x | 0.3280 | 0.3280 | 0.0000 | 0.01 % ↓ | |
| 3 | tbti | atom_site | O1 | occupancy | 0.9989 | 0.9940 | 0.0050 | 0.50 % ↓ | |
| 4 | tbti | atom_site | O2 | occupancy | 0.9688 | 0.9718 | 0.0088 | 0.31 % ↑ | |
| 5 | tbti | atom_site | O2 | adp_iso | Ų | 0.0030 | 0.0033 | 0.0002 | 7.87 % ↑ |
| 6 | tbti | atom_site_aniso | Tb | adp_11 | Ų | 0.0068 | 0.0066 | 0.0001 | 3.45 % ↓ |
| 7 | tbti | atom_site_aniso | Tb | adp_12 | Ų | 0.0000 | -0.0023 | 0.0001 | N/A |
| 8 | tbti | atom_site_aniso | Ti | adp_11 | Ų | 0.0054 | 0.0049 | 0.0003 | 9.56 % ↓ |
| 9 | tbti | atom_site_aniso | Ti | adp_12 | Ų | 0.0000 | -0.0005 | 0.0002 | N/A |
| 10 | tbti | atom_site_aniso | O1 | adp_11 | Ų | 0.0057 | 0.0067 | 0.0002 | 17.67 % ↑ |
| 11 | tbti | atom_site_aniso | O1 | adp_22 | Ų | 0.0057 | 0.0049 | 0.0001 | 14.61 % ↓ |
| 12 | tbti | atom_site_aniso | O1 | adp_23 | Ų | 0.0000 | 0.0019 | 0.0001 | N/A |
| 13 | heidi | extinction | radius | μm | 26.4348 | 24.8317 | 0.4931 | 6.06 % ↓ | |
| 14 | heidi | linked_crystal | scale | 2.9329 | 2.8744 | 0.0274 | 1.99 % ↓ |
• start = parameter value before refinement
• 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
• 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
In [34]:
Copied!
project.display.fit.correlations()
project.display.fit.correlations()
Loading plot…
In [35]:
Copied!
project.display.pattern(expt_name='heidi')
project.display.pattern(expt_name='heidi')
Loading plot…
In [36]:
Copied!
structure.show_as_cif()
structure.show_as_cif()
Structure 🧩 'tbti' as cif
| CIF | |
|---|---|
| 1 | data_tbti |
| 2 | |
| 3 | _cell.length_a 10.13 |
| 4 | _cell.length_b 10.13 |
| 5 | _cell.length_c 10.13 |
| 6 | _cell.angle_alpha 90. |
| 7 | _cell.angle_beta 90. |
| 8 | _cell.angle_gamma 90. |
| 9 | |
| 10 | _space_group.name_H-M_alt "F d -3 m" |
| 11 | _space_group.IT_coordinate_system_code 2 |
| 12 | |
| 13 | _geom.min_bond_distance_cutoff 0. |
| 14 | _geom.bond_distance_incr 0.25 |
| 15 | |
| 16 | loop_ |
| 17 | _atom_site.label |
| 18 | _atom_site.type_symbol |
| 19 | _atom_site.fract_x |
| 20 | _atom_site.fract_y |
| 21 | _atom_site.fract_z |
| 22 | _atom_site.Wyckoff_symbol |
| 23 | _atom_site.site_symmetry_multiplicity |
| 24 | _atom_site.occupancy |
| 25 | _atom_site.U_iso_or_equiv |
| 26 | _atom_site.ADP_type |
| 27 | Tb Tb 0.5 0.5 0.5 d 16 1. 0.00658189 Uani |
| 28 | Ti Ti 0. 0. 0. c 16 0.9661(85) 0.00488144 Uani |
| 29 | O1 O 0.327996(47) 0.125 0.125 f 48 0.9940(50) 0.00550586 Uani |
| 30 | O2 O 0.375 0.375 0.375 b 8 0.9718(88) 0.00327(24) Uiso |
| 31 | |
| 32 | loop_ |
| 33 | _atom_site_aniso.label |
| 34 | _atom_site_aniso.U_11 |
| 35 | _atom_site_aniso.U_22 |
| 36 | _atom_site_aniso.U_33 |
| 37 | _atom_site_aniso.U_12 |
| 38 | _atom_site_aniso.U_13 |
| 39 | _atom_site_aniso.U_23 |
| 40 | Tb 0.00658(14) 0.00658189 0.00658189 -0.00228(11) -0.00228459 -0.00228459 |
| 41 | Ti 0.00488(29) 0.00488144 0.00488144 -0.00048(25) -0.00048176 -0.00048176 |
| 42 | O1 0.00674(18) 0.00489(13) 0.0048898 0. 0. 0.00189(13) |
Display Structure (final)¶
Tb, Ti and O1 were refined with anisotropic displacements (Uani), so the
ADP view now draws them as probability ellipsoids, while O2 stayed isotropic
(Uiso) and remains a sphere — highlighting how the view changed from the
initial spheres to ellipsoids.
In [37]:
Copied!
project.display.structure(struct_name='tbti')
project.display.structure(struct_name='tbti')
Structure 🧩 'tbti' (Atom view type: 'adp')
Loading plot…
drag = rotate
wheel = zoom
right-drag = pan
wheel = zoom
right-drag = pan
📊 Report¶
In [38]:
Copied!
# Enable PDF report generation before the last save (time consuming)
project.report.pdf = True
project.save()
# Enable PDF report generation before the last save (time consuming)
project.report.pdf = True
project.save()
Saving project 📦 'tbti_heidi' to '../../../projects/ed_14_tbti_heidi'
├── 📄 project.cif
├── 📁 structures/
│ └── 📄 tbti.cif
├── 📁 experiments/
│ └── 📄 heidi.cif
├── 📁 analysis/
│ └── 📄 analysis.cif
└── 📁 reports/
├── 📄 tbti_heidi.html
└── 📄 tbti_heidi.pdf