Fields#

Every field of every recipe schema, with its type, unit and whether it is required. These tables are generated from the schemas.

  • The rules every recipe follows (parameter shapes, bounds, numbers, names, units) are on Recipe format.

  • Which features each schema offers is on the Engines overview.

  • Why the structural rules are as strict as they are is on Validation.

How to read the tables:

  • Field is the dotted path from the top of the recipe. <phase> and <label> stand for your phase names and atom labels.

  • Owner is core for a core block, the same in every engine, and engine for the engine’s own fields.

  • Unit is fixed per field. A recipe never states it.

  • Notes says what an optional field means when it is left out.

Core fields (every schema)#

The recipe frame, the data, the fit window, the Chebyshev background and the phase block (space_group, unit_cell, atoms).

Core schema version 0.1.0 (accepted: ==0.1.0). Where an engine places the Chebyshev background, and whether fit_range and background may be left out, is stated in that engine’s table.

Field

Type

Unit

Required

Notes

schema_name

string

yes

Engine and workflow, e.g. “gsasii.rietveld”

core_schema_version

string

yes

Core schema version the recipe is written against

engine_schema_version

string

yes

Engine schema version the recipe is written against

metadata

block

no

Free-form, JSON-serializable; echoed into results; optional

payload.xrd_data

block

yes

Measured pattern: 2theta, intensity, weights.

payload.xrd_data.tth

list of number

degree 2theta

yes

Two-theta values

payload.xrd_data.Itth

list of number

arbitrary

yes

Intensity values

payload.xrd_data.Itth_weights

list of number

1/intensity^2

yes

Intensity weights (1/sigma^2)

payload.xrd_data.filename

string

no

Original filename for reference; optional

payload.fit_range

[min, max] (either end null)

degree 2theta

no

[min, max]; either end may be null (open)

payload.background.chebyshev

block

yes

Chebyshev polynomial background: num_coefficients, coefficients, refine_flag.

payload.background.chebyshev.num_coefficients

integer

yes

Number of Chebyshev coefficients

payload.background.chebyshev.coefficients

list of number

yes

Coefficient values

payload.background.chebyshev.refine_flag

boolean

yes

Whether to refine background

payload.phases.<phase>

block

yes

payload.phases.<phase>.space_group

string

yes

gemmi’s canonical extended Hermann-Mauguin name, e.g. ‘P m -3 m’, ‘C 1 2/m 1’, ‘R -3 m:H’, ‘F d -3 m:2’

payload.phases.<phase>.unit_cell

block

yes

payload.phases.<phase>.unit_cell.a

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom

yes

payload.phases.<phase>.unit_cell.b

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom

yes

payload.phases.<phase>.unit_cell.c

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom

yes

payload.phases.<phase>.unit_cell.alpha

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

degree

yes

payload.phases.<phase>.unit_cell.beta

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

degree

yes

payload.phases.<phase>.unit_cell.gamma

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

degree

yes

payload.phases.<phase>.atoms

object keyed by name

yes

Atoms keyed by unique label: a letter, then ASCII letters, digits or ‘_’

payload.phases.<phase>.atoms.<label>

block

yes

payload.phases.<phase>.atoms.<label>.element

string

yes

Bare element symbol, exactly as in the periodic table (e.g. ‘Fe’)

payload.phases.<phase>.atoms.<label>.x

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

yes

Fractional x coordinate

payload.phases.<phase>.atoms.<label>.y

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

yes

Fractional y coordinate

payload.phases.<phase>.atoms.<label>.z

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

yes

Fractional z coordinate

payload.phases.<phase>.atoms.<label>.occupancy

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

yes

Site occupancy, 0 to 1 inclusive

payload.phases.<phase>.atoms.<label>.Multiplicity

integer

no

Site multiplicity; optional, cross-checked when stated

payload.phases.<phase>.atoms.<label>.ADP

"Uiso" | "Uaniso"

yes

Displacement-parameter type

payload.phases.<phase>.atoms.<label>.Uiso

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom^2

no

Isotropic ADP; required when ADP is ‘Uiso’, else left out

payload.phases.<phase>.atoms.<label>.Uaniso

block

no

All six of U11, U22, U33, U12, U13, U23; required when ADP is ‘Uaniso’, else left out

payload.phases.<phase>.atoms.<label>.Uaniso.U11

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom^2

yes

payload.phases.<phase>.atoms.<label>.Uaniso.U22

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom^2

yes

payload.phases.<phase>.atoms.<label>.Uaniso.U33

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom^2

yes

payload.phases.<phase>.atoms.<label>.Uaniso.U12

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom^2

yes

payload.phases.<phase>.atoms.<label>.Uaniso.U13

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom^2

yes

payload.phases.<phase>.atoms.<label>.Uaniso.U23

parameter ([value, flag]; [value, flag, min, max] in engines with bounds)

angstrom^2

yes

gsasii.rietveld#

gsasii.rietveld: engine schema 0.1.0 (accepted: ==0.1.0), requires core ==0.1.0. Parameter shape: [value, flag]. Rows marked core are the core blocks of the core table above, placed where this engine puts them.

Field

Owner

Type

Unit

Required

Notes

payload.xrd_data

core

xrd_data (core block)

yes

Measured pattern: 2theta, intensity, weights.

payload.instrument

engine

block

yes

The instrument, single source: the gateway builds GSAS-II’s instrument parameters from it.

payload.instrument.description

engine

string

no

Free text, e.g. the beamline

payload.instrument.radiation

engine

block

yes

Radiation: GSAS-II type PXC (powder X-ray, constant wavelength) only; one wavelength.

payload.instrument.radiation.type

engine

"PXC"

yes

GSAS-II instrument type; ‘PXC’ only (Kα doublets, TOF and neutron are not supported)

payload.instrument.radiation.wavelength

engine

[value, flag]

angstrom

yes

Wavelength (GSAS-II ‘Lam’), > 0

payload.instrument.geometry

engine

block

yes

Detector geometry: GSAS-II Bank and Azimuth (plain values).

payload.instrument.geometry.bank

engine

integer

yes

GSAS-II ‘Bank’

payload.instrument.geometry.azimuth

engine

number

degree

yes

GSAS-II ‘Azimuth’

payload.instrument.corrections

engine

block

yes

Instrument corrections: zero shift, polarization, axial divergence (GSAS-II ‘SH/L’).

payload.instrument.corrections.zero_shift

engine

[value, flag]

degree 2theta

yes

GSAS-II ‘Zero’

payload.instrument.corrections.polarization

engine

[value, flag]

dimensionless

yes

GSAS-II ‘Polariz.’

payload.instrument.corrections.axial_divergence

engine

[value, flag]

dimensionless

yes

GSAS-II ‘SH/L’ (asymmetry); at least 0.002 (GSAS-II’s own floor)

payload.instrument.broadening

engine

block

yes

Instrument profile (Caglioti U, V, W; Lorentzian X, Y, Z).

payload.instrument.broadening.U

engine

[value, flag]

centidegree^2 2theta

yes

payload.instrument.broadening.V

engine

[value, flag]

centidegree^2 2theta

yes

payload.instrument.broadening.W

engine

[value, flag]

centidegree^2 2theta

yes

payload.instrument.broadening.X

engine

[value, flag]

centidegree 2theta

yes

payload.instrument.broadening.Y

engine

[value, flag]

centidegree 2theta

yes

payload.instrument.broadening.Z

engine

[value, flag]

centidegree 2theta

yes

payload.fit_range

core

fit_range (core block)

degree 2theta

no

Left out: the data’s full 2theta range

payload.background

engine

block

no

Background: a Chebyshev polynomial (GSAS-II chebyschev-1) and optional single peaks.

payload.background.chebyshev

core

Chebyshev background (core block)

no

Left out: one fixed Chebyshev term 0.0 (no background), with the warning gsasii_background_default_applied

payload.background.single_peaks

engine

block

no

Left out: no background peaks

payload.background.single_peaks.positions

engine

list of [value, flag]

degree 2theta

yes

payload.background.single_peaks.intensities

engine

list of [value, flag]

arbitrary

yes

payload.background.single_peaks.pv_gaussian_sigma_sq

engine

list of [value, flag]

centidegree^2 2theta

yes

payload.background.single_peaks.pv_lorentzian_gamma

engine

list of [value, flag]

centidegree 2theta

yes

payload.phases

engine

object keyed by name

yes

payload.phases.<phase>

engine

block

yes

A gsasii phase: core’s space group, cell and atoms, plus scale and peak_broadening.

payload.phases.<phase>.space_group

core

canonical space-group name (core)

yes

see the core fields

payload.phases.<phase>.unit_cell

core

unit cell (core block)

yes

see the core fields

payload.phases.<phase>.atoms

core

atoms (core block)

yes

see the core fields

payload.phases.<phase>.scale

engine

[value, flag]

arbitrary

yes

Phase scale factor, >= 0 (0 allowed for reusable recipes)

payload.phases.<phase>.peak_broadening

engine

block

no

Left out (in whole or part): 10 um, 0 microstrain, isotropic, fixed, with a warning

payload.phases.<phase>.peak_broadening.size_broadening

engine

block

no

Crystallite-size broadening; isotropic only in gsasii 0.1.0.

payload.phases.<phase>.peak_broadening.size_broadening.model

engine

"isotropic"

yes

‘isotropic’ (uniaxial and ellipsoidal are not supported)

payload.phases.<phase>.peak_broadening.size_broadening.isotropic_size

engine

[value, flag]

micrometre

yes

> 0

payload.phases.<phase>.peak_broadening.size_broadening.LG_eta

engine

[value, flag]

dimensionless

yes

Lorentzian fraction of the size profile (1 = Lorentzian)

payload.phases.<phase>.peak_broadening.strain_broadening

engine

block

no

Microstrain broadening; isotropic only in gsasii 0.1.0.

payload.phases.<phase>.peak_broadening.strain_broadening.model

engine

"isotropic"

yes

‘isotropic’ (uniaxial and generalized are not supported)

payload.phases.<phase>.peak_broadening.strain_broadening.isotropic_strain

engine

[value, flag]

microstrain

yes

Microstrain, Δd/d × 10^6

payload.phases.<phase>.peak_broadening.strain_broadening.LG_eta

engine

[value, flag]

dimensionless

yes

Lorentzian fraction of the strain profile (1 = Lorentzian)

payload.phases.<phase>.scattering_types

engine

object keyed by name

no

Ionic X-ray scattering types by atom label, CIF spelling (‘La3+’, ‘O2-‘); an atom left out scatters as the neutral element; only ions GSAS-II 5.7.9 has a form factor for

payload.phases.<phase>.scattering_types.<name>

engine

string

yes

payload.phases.<phase>.preferred_orientation

engine

block

no

March-Dollase preferred orientation (GSAS-II ‘MD’: one axis, coefficient r > 0); left out: none

payload.phases.<phase>.preferred_orientation.model

engine

"march_dollase"

yes

The only model in 0.1.0

payload.phases.<phase>.preferred_orientation.hkl

engine

list of 3

yes

Texture axis as Miller indices, not all zero

payload.phases.<phase>.preferred_orientation.ratio

engine

[value, flag]

yes

March coefficient r: 1 = random, < 1 platy, > 1 needle; > 0

payload.refinement_controls

engine

block

yes

Refinement controls; refinement_cycles == 1 is a simulation (nothing refined).

payload.refinement_controls.refinement_cycles

engine

integer

no

GSAS-II least-squares cycles; default 5

gsasii.spf#

gsasii.spf: engine schema 0.1.0 (accepted: ==0.1.0), requires core ==0.1.0. Parameter shape: [value, flag]. Rows marked core are the core blocks of the core table above, placed where this engine puts them.

Field

Owner

Type

Unit

Required

Notes

payload.xrd_data

core

xrd_data (core block)

yes

Measured pattern: 2theta, intensity, weights.

payload.instrument

engine

block

yes

The instrument, single source: the gateway builds GSAS-II’s instrument parameters from it.

payload.instrument.description

engine

string

no

Free text, e.g. the beamline

payload.instrument.radiation

engine

block

yes

Radiation: GSAS-II type PXC (powder X-ray, constant wavelength) only; one wavelength.

payload.instrument.radiation.type

engine

"PXC"

yes

GSAS-II instrument type; ‘PXC’ only (Kα doublets, TOF and neutron are not supported)

payload.instrument.radiation.wavelength

engine

[value, flag]

angstrom

yes

Wavelength (GSAS-II ‘Lam’), > 0

payload.instrument.geometry

engine

block

yes

Detector geometry: GSAS-II Bank and Azimuth (plain values).

payload.instrument.geometry.bank

engine

integer

yes

GSAS-II ‘Bank’

payload.instrument.geometry.azimuth

engine

number

degree

yes

GSAS-II ‘Azimuth’

payload.instrument.corrections

engine

block

yes

Instrument corrections: zero shift, polarization, axial divergence (GSAS-II ‘SH/L’).

payload.instrument.corrections.zero_shift

engine

[value, flag]

degree 2theta

yes

GSAS-II ‘Zero’

payload.instrument.corrections.polarization

engine

[value, flag]

dimensionless

yes

GSAS-II ‘Polariz.’

payload.instrument.corrections.axial_divergence

engine

[value, flag]

dimensionless

yes

GSAS-II ‘SH/L’ (asymmetry); at least 0.002 (GSAS-II’s own floor)

payload.instrument.broadening

engine

block

yes

Instrument profile (Caglioti U, V, W; Lorentzian X, Y, Z).

payload.instrument.broadening.U

engine

[value, flag]

centidegree^2 2theta

yes

payload.instrument.broadening.V

engine

[value, flag]

centidegree^2 2theta

yes

payload.instrument.broadening.W

engine

[value, flag]

centidegree^2 2theta

yes

payload.instrument.broadening.X

engine

[value, flag]

centidegree 2theta

yes

payload.instrument.broadening.Y

engine

[value, flag]

centidegree 2theta

yes

payload.instrument.broadening.Z

engine

[value, flag]

centidegree 2theta

yes

payload.fit_range

core

fit_range (core block)

degree 2theta

no

Left out: the data’s full 2theta range

payload.background

engine

block

no

Background: a Chebyshev polynomial (GSAS-II chebyschev-1) and optional single peaks.

payload.background.chebyshev

core

Chebyshev background (core block)

no

Left out: one fixed Chebyshev term 0.0 (no background), with the warning gsasii_background_default_applied

payload.background.single_peaks

engine

block

no

Left out: no background peaks

payload.background.single_peaks.positions

engine

list of [value, flag]

degree 2theta

yes

payload.background.single_peaks.intensities

engine

list of [value, flag]

arbitrary

yes

payload.background.single_peaks.pv_gaussian_sigma_sq

engine

list of [value, flag]

centidegree^2 2theta

yes

payload.background.single_peaks.pv_lorentzian_gamma

engine

list of [value, flag]

centidegree 2theta

yes

payload.single_peaks

engine

block

yes

Peak List peaks for single peak fitting: all four lists, the same length.

payload.single_peaks.positions

engine

list of [value, flag]

degree 2theta

yes

payload.single_peaks.intensities

engine

list of [value, flag]

arbitrary

yes

payload.single_peaks.pv_gaussian_sigma_sq

engine

list of [value, flag]

centidegree^2 2theta

yes

payload.single_peaks.pv_lorentzian_gamma

engine

list of [value, flag]

centidegree 2theta

yes

payload.refinement_controls

engine

block

yes

Single-peak-fitting controls.

payload.refinement_controls.refinement_cycles

engine

integer

no

GSAS-II peak-fit cycles; default 5

payload.refinement_controls.single_peak_fitting_mode

engine

block

yes

payload.refinement_controls.single_peak_fitting_mode.use_instrument_profile

engine

boolean

yes

True: peak widths from the instrument profile U..Z (GSAS-II ‘useIP’; the peaks’ own sigma^2/gamma are not used and may not be refined); False: each peak’s own widths, which may be refined (‘hold’; U..Z have no effect and may not be refined)

topas.rietveld#

topas.rietveld: engine schema 0.1.0 (accepted: ==0.1.0), requires core ==0.1.0; TOPAS versions a recipe may state: ==6. Parameter shape: [value, flag, min, max]. Rows marked core are the core blocks of the core table above, placed where this engine puts them.

Field

Owner

Type

Unit

Required

Notes

engine_version

engine

string

yes

TOPAS major version the recipe is written for, e.g. ‘6’

payload.xrd_data

core

xrd_data (core block)

yes

Measured pattern: 2theta, intensity, weights.

payload.fit_range

core

fit_range (core block)

degree 2theta

no

Left out: the data’s full 2theta range

payload.instrument

engine

block

yes

The instrument: emission line, radii, corrections, peak type.

payload.instrument.description

engine

string

no

Free text, e.g. the beamline

payload.instrument.radiation

engine

block

yes

One emission line (TOPAS lam): la, lo, lh and optionally lg with lh.

payload.instrument.radiation.ymin_on_ymax

engine

number

yes

TOPAS ‘ymin_on_ymax’: x-axis extent of the emission line

payload.instrument.radiation.la

engine

[value, flag, min, max]

dimensionless

yes

TOPAS ‘la’: area of the line, > 0

payload.instrument.radiation.lo

engine

[value, flag, min, max]

angstrom

yes

TOPAS ‘lo’: wavelength, > 0

payload.instrument.radiation.lh

engine

[value, flag, min, max]

milliangstrom

yes

TOPAS ‘lh’: Lorentzian half-width of the line, > 0 (synchrotron: very narrow, e.g. 0.0001)

payload.instrument.radiation.lg

engine

[value, flag, min, max]

milliangstrom

no

TOPAS ‘lg’: Gaussian half-width, > 0; only together with lh (lg alone crashes TOPAS 6)

payload.instrument.geometry

engine

block

no

Required with an axial model, else left out

payload.instrument.geometry.Rp

engine

number

millimetre

no

Primary radius; required with Full_Axial_Model only

payload.instrument.geometry.Rs

engine

number

millimetre

no

Secondary radius; required with either axial model

payload.instrument.corrections

engine

block

no

Left out: no corrections

payload.instrument.corrections.Zero_Error

engine

block

no

TOPAS ZE / Zero_Error: th2_offset.

payload.instrument.corrections.Zero_Error.th2_offset

engine

[value, flag, min, max]

degree 2theta

yes

Zero error

payload.instrument.corrections.LP_Factor

engine

block

no

TOPAS LP_Factor: Lorentz-polarization with a monochromator angle.

payload.instrument.corrections.LP_Factor.monochromator_angle

engine

[value, flag, min, max]

degree

yes

Monochromator 2theta: 90 synchrotron/neutron, 0 no monochromator

payload.instrument.corrections.LP_Factor_Synchrotron

engine

block

no

TOPAS LP_Factor_Synchrotron (Madsen): in-plane polarization and monochromator angle.

payload.instrument.corrections.LP_Factor_Synchrotron.pp

engine

[value, flag, min, max]

dimensionless

yes

Polarization in the plane: 0 ideal synchrotron … 1 laboratory tube

payload.instrument.corrections.LP_Factor_Synchrotron.mono

engine

[value, flag, min, max]

degree

yes

Monochromator 2theta

payload.instrument.corrections.Simple_Axial_Model

engine

block

no

TOPAS Simple_Axial_Model: one axial length; reads Rs.

payload.instrument.corrections.Simple_Axial_Model.axial_length_mm

engine

[value, flag, min, max]

millimetre

yes

Axial divergence length

payload.instrument.corrections.Full_Axial_Model

engine

block

no

TOPAS Full_Axial_Model (axial_conv); reads Rp and Rs. Soller angles left out: no Soller slit.

payload.instrument.corrections.Full_Axial_Model.filament_length

engine

[value, flag, min, max]

millimetre

yes

payload.instrument.corrections.Full_Axial_Model.sample_length

engine

[value, flag, min, max]

millimetre

yes

payload.instrument.corrections.Full_Axial_Model.receiving_slit_length

engine

[value, flag, min, max]

millimetre

yes

payload.instrument.corrections.Full_Axial_Model.primary_soller_angle

engine

[value, flag, min, max]

degree

no

payload.instrument.corrections.Full_Axial_Model.secondary_soller_angle

engine

[value, flag, min, max]

degree

no

payload.instrument.corrections.Full_Axial_Model.axial_n_beta

engine

integer

yes

TOPAS ‘axial_n_beta’: rays per point source

payload.instrument.corrections.capillary

engine

block

no

TOPAS capillary absorption (TOPAS 6 keywords; the focusing-beam keywords are TOPAS 7 only).

payload.instrument.corrections.capillary.diameter_mm

engine

[value, flag, min, max]

millimetre

yes

TOPAS ‘capillary_diameter_mm’

payload.instrument.corrections.capillary.u_cm_inv

engine

[value, flag, min, max]

1/cm

yes

TOPAS ‘capillary_u_cm_inv’: linear absorption coefficient

payload.instrument.corrections.capillary.beam

engine

"parallel" | "divergent"

yes

TOPAS ‘capillary_parallel_beam’ or ‘capillary_divergent_beam’ (the capillary is assumed fully illuminated)

payload.instrument.broadening

engine

block

yes

Instrument peak type (TOPAS.INC macro) and its parameters.

payload.instrument.broadening.peak_type

engine

"TCHZ_Peak_Type" | "PV_Peak_Type" | "PVII_Peak_Type"

yes

payload.instrument.broadening.parameters

engine

object keyed by name

yes

payload.instrument.broadening.parameters.<name>

engine

[value, flag, min, max]

yes

payload.background

engine

block

no

Left out: no background

payload.background.chebyshev

core

Chebyshev background (core block)

no

Chebyshev polynomial background: num_coefficients, coefficients, refine_flag.

payload.background.One_on_X

engine

[value, flag, min, max]

arbitrary

no

TOPAS One_on_X: fit_obj = value / X

payload.background.peaks

engine

list of BackgroundPeak

no

payload.background.peaks[]

engine

block

yes

A background peak: one TOPAS xo_Is phase with its own peak type (no instrument profile).

payload.background.peaks[].xo

engine

[value, flag, min, max]

degree 2theta

yes

Position, inside the fit window

payload.background.peaks[].I

engine

[value, flag, min, max]

arbitrary

yes

Intensity

payload.background.peaks[].peak_type

engine

"pv" | "spv" | "spvii"

yes

payload.background.peaks[].parameters

engine

object keyed by name

yes

pv: pv_fwhm, pv_lor; spv: spv_h1, spv_h2, spv_l1, spv_l2; spvii: h1, h2, m1, m2 (widths in degree 2theta)

payload.background.peaks[].parameters.<name>

engine

[value, flag, min, max]

yes

payload.refinement_controls

engine

block

yes

Refinement controls, all stated (no defaults). iters == 0 is a simulation (nothing refined).

payload.refinement_controls.iters

engine

integer

yes

TOPAS ‘iters’: maximum iterations; 0 = calculate only

payload.refinement_controls.chi2_convergence_criteria

engine

number

yes

TOPAS ‘chi2_convergence_criteria’

payload.refinement_controls.x_calculation_step

engine

number

degree 2theta

yes

TOPAS ‘x_calculation_step’ (required for .xye data)

payload.phases

engine

object keyed by name

yes

payload.phases.<phase>

engine

block

yes

A topas phase: core’s space group, cell and atoms, plus scale and peak_broadening.

payload.phases.<phase>.space_group

core

canonical space-group name (core)

yes

see the core fields

payload.phases.<phase>.unit_cell

core

unit cell (core block)

yes

see the core fields

payload.phases.<phase>.atoms

core

atoms (core block)

yes

see the core fields

payload.phases.<phase>.scale

engine

[value, flag, min, max]

arbitrary

yes

Phase scale factor (TOPAS magnitude), > 0

payload.phases.<phase>.peak_broadening

engine

block

no

Left out: no sample broadening

payload.phases.<phase>.peak_broadening.size_broadening

engine

block

no

Isotropic crystallite-size broadening: TOPAS CS_L / CS_G (nm; at least one).

payload.phases.<phase>.peak_broadening.size_broadening.model

engine

"isotropic"

yes

payload.phases.<phase>.peak_broadening.size_broadening.CS_L

engine

[value, flag, min, max]

nanometre

no

payload.phases.<phase>.peak_broadening.size_broadening.CS_G

engine

[value, flag, min, max]

nanometre

no

payload.phases.<phase>.peak_broadening.strain_broadening

engine

block

no

Isotropic microstrain broadening: TOPAS Strain_L / Strain_G (degree 2theta; at least one).

payload.phases.<phase>.peak_broadening.strain_broadening.model

engine

"isotropic"

yes

payload.phases.<phase>.peak_broadening.strain_broadening.Strain_L

engine

[value, flag, min, max]

degree 2theta

no

payload.phases.<phase>.peak_broadening.strain_broadening.Strain_G

engine

[value, flag, min, max]

degree 2theta

no

payload.phases.<phase>.scattering_types

engine

object keyed by name

no

Ionic X-ray scattering types by atom label, CIF spelling (‘La3+’, ‘O2-‘), written to TOPAS’s occ as ‘La+3’; an atom left out scatters as the neutral element; only ions in TOPAS 6’s ATMSCAT.CPP

payload.phases.<phase>.scattering_types.<name>

engine

string

yes

payload.phases.<phase>.preferred_orientation

engine

block

no

March-Dollase preferred orientation (TOPAS PO macro: one axis, ratio r > 0; an open bound is TOPAS’s own limit: min 0.0001, max 2 x (current r) + 0.5, which follows r); left out: none

payload.phases.<phase>.preferred_orientation.model

engine

"march_dollase"

yes

The only model in 0.1.0

payload.phases.<phase>.preferred_orientation.hkl

engine

list of 3

yes

Texture axis as Miller indices, not all zero

payload.phases.<phase>.preferred_orientation.ratio

engine

[value, flag, min, max]

yes

March coefficient r: 1 = random, < 1 platy, > 1 needle; > 0

topas.spf#

topas.spf: engine schema 0.1.0 (accepted: ==0.1.0), requires core ==0.1.0; TOPAS versions a recipe may state: ==6. Parameter shape: [value, flag, min, max]. Rows marked core are the core blocks of the core table above, placed where this engine puts them.

Field

Owner

Type

Unit

Required

Notes

engine_version

engine

string

yes

TOPAS major version the recipe is written for, e.g. ‘6’

payload.xrd_data

core

xrd_data (core block)

yes

Measured pattern: 2theta, intensity, weights.

payload.fit_range

core

fit_range (core block)

degree 2theta

no

Left out: the data’s full 2theta range

payload.instrument

engine

block

yes

The instrument: emission line, radii, corrections, peak type.

payload.instrument.description

engine

string

no

Free text, e.g. the beamline

payload.instrument.radiation

engine

block

yes

One emission line (TOPAS lam): la, lo, lh and optionally lg with lh.

payload.instrument.radiation.ymin_on_ymax

engine

number

yes

TOPAS ‘ymin_on_ymax’: x-axis extent of the emission line

payload.instrument.radiation.la

engine

[value, flag, min, max]

dimensionless

yes

TOPAS ‘la’: area of the line, > 0

payload.instrument.radiation.lo

engine

[value, flag, min, max]

angstrom

yes

TOPAS ‘lo’: wavelength, > 0

payload.instrument.radiation.lh

engine

[value, flag, min, max]

milliangstrom

yes

TOPAS ‘lh’: Lorentzian half-width of the line, > 0 (synchrotron: very narrow, e.g. 0.0001)

payload.instrument.radiation.lg

engine

[value, flag, min, max]

milliangstrom

no

TOPAS ‘lg’: Gaussian half-width, > 0; only together with lh (lg alone crashes TOPAS 6)

payload.instrument.geometry

engine

block

no

Required with an axial model, else left out

payload.instrument.geometry.Rp

engine

number

millimetre

no

Primary radius; required with Full_Axial_Model only

payload.instrument.geometry.Rs

engine

number

millimetre

no

Secondary radius; required with either axial model

payload.instrument.corrections

engine

block

no

Left out: no corrections

payload.instrument.corrections.Zero_Error

engine

block

no

TOPAS ZE / Zero_Error: th2_offset.

payload.instrument.corrections.Zero_Error.th2_offset

engine

[value, flag, min, max]

degree 2theta

yes

Zero error

payload.instrument.corrections.LP_Factor

engine

block

no

TOPAS LP_Factor: Lorentz-polarization with a monochromator angle.

payload.instrument.corrections.LP_Factor.monochromator_angle

engine

[value, flag, min, max]

degree

yes

Monochromator 2theta: 90 synchrotron/neutron, 0 no monochromator

payload.instrument.corrections.LP_Factor_Synchrotron

engine

block

no

TOPAS LP_Factor_Synchrotron (Madsen): in-plane polarization and monochromator angle.

payload.instrument.corrections.LP_Factor_Synchrotron.pp

engine

[value, flag, min, max]

dimensionless

yes

Polarization in the plane: 0 ideal synchrotron … 1 laboratory tube

payload.instrument.corrections.LP_Factor_Synchrotron.mono

engine

[value, flag, min, max]

degree

yes

Monochromator 2theta

payload.instrument.corrections.Simple_Axial_Model

engine

block

no

TOPAS Simple_Axial_Model: one axial length; reads Rs.

payload.instrument.corrections.Simple_Axial_Model.axial_length_mm

engine

[value, flag, min, max]

millimetre

yes

Axial divergence length

payload.instrument.corrections.Full_Axial_Model

engine

block

no

TOPAS Full_Axial_Model (axial_conv); reads Rp and Rs. Soller angles left out: no Soller slit.

payload.instrument.corrections.Full_Axial_Model.filament_length

engine

[value, flag, min, max]

millimetre

yes

payload.instrument.corrections.Full_Axial_Model.sample_length

engine

[value, flag, min, max]

millimetre

yes

payload.instrument.corrections.Full_Axial_Model.receiving_slit_length

engine

[value, flag, min, max]

millimetre

yes

payload.instrument.corrections.Full_Axial_Model.primary_soller_angle

engine

[value, flag, min, max]

degree

no

payload.instrument.corrections.Full_Axial_Model.secondary_soller_angle

engine

[value, flag, min, max]

degree

no

payload.instrument.corrections.Full_Axial_Model.axial_n_beta

engine

integer

yes

TOPAS ‘axial_n_beta’: rays per point source

payload.instrument.corrections.capillary

engine

block

no

TOPAS capillary absorption (TOPAS 6 keywords; the focusing-beam keywords are TOPAS 7 only).

payload.instrument.corrections.capillary.diameter_mm

engine

[value, flag, min, max]

millimetre

yes

TOPAS ‘capillary_diameter_mm’

payload.instrument.corrections.capillary.u_cm_inv

engine

[value, flag, min, max]

1/cm

yes

TOPAS ‘capillary_u_cm_inv’: linear absorption coefficient

payload.instrument.corrections.capillary.beam

engine

"parallel" | "divergent"

yes

TOPAS ‘capillary_parallel_beam’ or ‘capillary_divergent_beam’ (the capillary is assumed fully illuminated)

payload.instrument.broadening

engine

block

yes

Instrument peak type (TOPAS.INC macro) and its parameters.

payload.instrument.broadening.peak_type

engine

"TCHZ_Peak_Type" | "PV_Peak_Type" | "PVII_Peak_Type"

yes

payload.instrument.broadening.parameters

engine

object keyed by name

yes

payload.instrument.broadening.parameters.<name>

engine

[value, flag, min, max]

yes

payload.background

engine

block

no

Left out: no background

payload.background.chebyshev

core

Chebyshev background (core block)

no

Chebyshev polynomial background: num_coefficients, coefficients, refine_flag.

payload.background.One_on_X

engine

[value, flag, min, max]

arbitrary

no

TOPAS One_on_X: fit_obj = value / X

payload.background.peaks

engine

list of BackgroundPeak

no

payload.background.peaks[]

engine

block

yes

A background peak: one TOPAS xo_Is phase with its own peak type (no instrument profile).

payload.background.peaks[].xo

engine

[value, flag, min, max]

degree 2theta

yes

Position, inside the fit window

payload.background.peaks[].I

engine

[value, flag, min, max]

arbitrary

yes

Intensity

payload.background.peaks[].peak_type

engine

"pv" | "spv" | "spvii"

yes

payload.background.peaks[].parameters

engine

object keyed by name

yes

pv: pv_fwhm, pv_lor; spv: spv_h1, spv_h2, spv_l1, spv_l2; spvii: h1, h2, m1, m2 (widths in degree 2theta)

payload.background.peaks[].parameters.<name>

engine

[value, flag, min, max]

yes

payload.refinement_controls

engine

block

yes

Refinement controls, all stated (no defaults). iters == 0 is a simulation (nothing refined).

payload.refinement_controls.iters

engine

integer

yes

TOPAS ‘iters’: maximum iterations; 0 = calculate only

payload.refinement_controls.chi2_convergence_criteria

engine

number

yes

TOPAS ‘chi2_convergence_criteria’

payload.refinement_controls.x_calculation_step

engine

number

degree 2theta

yes

TOPAS ‘x_calculation_step’ (required for .xye data)

payload.single_peaks

engine

list of SinglePeak

yes

payload.single_peaks[]

engine

block

yes

One single peak: a TOPAS xo_Is with the instrument peak type convolved with its own sample widths.

payload.single_peaks[].xo

engine

[value, flag, min, max]

degree 2theta

yes

Position, inside the fit window

payload.single_peaks[].I

engine

[value, flag, min, max]

arbitrary

yes

Intensity

payload.single_peaks[].gauss_fwhm

engine

[value, flag, min, max]

degree 2theta

no

Sample Gaussian FWHM, >= 0; left out: not convolved

payload.single_peaks[].lor_fwhm

engine

[value, flag, min, max]

degree 2theta

no

Sample Lorentzian FWHM, >= 0; left out: not convolved

easydiffraction.rietveld#

easydiffraction.rietveld: engine schema 0.1.0 (accepted: ==0.1.0), requires core ==0.1.0. Parameter shape: [value, flag, min, max]. Rows marked core are the core blocks of the core table above, placed where this engine puts them.

Field

Owner

Type

Unit

Required

Notes

payload.xrd_data

core

xrd_data (core block)

yes

Measured pattern: 2theta, intensity, weights.

payload.fit_range

core

fit_range (core block)

degree 2theta

no

Left out: the data’s weighted points, end to end

payload.instrument

engine

block

yes

The instrument block.

payload.instrument.description

engine

string

no

Free text

payload.instrument.radiation

engine

block

yes

Incident radiation: one wavelength, optionally a Kα2 line (both stated or neither).

payload.instrument.radiation.setup_wavelength

engine

[value, flag, min, max]

angstrom

yes

Wavelength (Kα1), > 0

payload.instrument.radiation.setup_wavelength_2

engine

number

angstrom

no

Second wavelength (Kα2), > 0, with setup_wavelength_2_to_1_ratio; left out: one wavelength

payload.instrument.radiation.setup_wavelength_2_to_1_ratio

engine

number

dimensionless

no

Kα2/Kα1 intensity ratio, 0 < ratio <= 1, with setup_wavelength_2

payload.instrument.polarization

engine

block

no

Left out: no polarization correction (p = 0)

payload.instrument.polarization.setup_polarization_coefficient

engine

number

dimensionless

yes

p, 0..1

payload.instrument.polarization.setup_monochromator_twotheta

engine

number

degree

yes

Monochromator 2theta_m, 0 <= 2theta_m < 180

payload.instrument.corrections

engine

block

yes

Peak-position corrections (degrees 2theta). Displacement and transparency left out: not modeled.

payload.instrument.corrections.calib_twotheta_offset

engine

[value, flag, min, max]

degree 2theta

yes

Zero offset

payload.instrument.corrections.calib_sample_displacement

engine

[value, flag, min, max]

degree 2theta

no

Specimen displacement term (shift x cos 2theta)

payload.instrument.corrections.calib_sample_transparency

engine

[value, flag, min, max]

degree 2theta

no

Transparency term (shift x sin 2theta)

payload.instrument.absorption

engine

block

no

Left out: no absorption correction

payload.instrument.absorption.type

engine

"cylinder-hewat"

yes

easydiffraction absorption type

payload.instrument.absorption.mu_r

engine

[value, flag, min, max]

dimensionless

yes

mu R, >= 0

payload.instrument.broadening

engine

one of the peak_type variants

yes

variant cwl-pseudo-voigt:

payload.instrument.broadening.cutoff_fwhm

engine

number

dimensionless

no

CrysPy only: peaks computed within this many FWHM; left out: no cutoff (full tails)

payload.instrument.broadening.peak_type

engine

"cwl-pseudo-voigt"

yes

payload.instrument.broadening.parameters

engine

block

yes

cwl-pseudo-voigt: the Thompson-Cox-Hastings pseudo-Voigt, no asymmetry (EB-76).

payload.instrument.broadening.parameters.broad_gauss_u

engine

[value, flag, min, max]

degree^2

yes

payload.instrument.broadening.parameters.broad_gauss_v

engine

[value, flag, min, max]

degree^2

yes

payload.instrument.broadening.parameters.broad_gauss_w

engine

[value, flag, min, max]

degree^2

yes

payload.instrument.broadening.parameters.broad_lorentz_x

engine

[value, flag, min, max]

degree

yes

payload.instrument.broadening.parameters.broad_lorentz_y

engine

[value, flag, min, max]

degree

yes

payload.instrument.broadening

engine

one of the peak_type variants

yes

variant cwl-pseudo-voigt-berar-baldinozzi-asymmetry:

payload.instrument.broadening.cutoff_fwhm

engine

number

dimensionless

no

CrysPy only: peaks computed within this many FWHM; left out: no cutoff (full tails)

payload.instrument.broadening.peak_type

engine

"cwl-pseudo-voigt-berar-baldinozzi-asymmetry"

yes

payload.instrument.broadening.parameters

engine

block

yes

cwl-pseudo-voigt-berar-baldinozzi-asymmetry: pseudo-Voigt with empirical asymmetry (CrysPy).

payload.instrument.broadening.parameters.broad_gauss_u

engine

[value, flag, min, max]

degree^2

yes

payload.instrument.broadening.parameters.broad_gauss_v

engine

[value, flag, min, max]

degree^2

yes

payload.instrument.broadening.parameters.broad_gauss_w

engine

[value, flag, min, max]

degree^2

yes

payload.instrument.broadening.parameters.broad_lorentz_x

engine

[value, flag, min, max]

degree

yes

payload.instrument.broadening.parameters.broad_lorentz_y

engine

[value, flag, min, max]

degree

yes

payload.instrument.broadening.parameters.asym_beba_a0

engine

[value, flag, min, max]

dimensionless

yes

payload.instrument.broadening.parameters.asym_beba_b0

engine

[value, flag, min, max]

dimensionless

yes

payload.instrument.broadening.parameters.asym_beba_a1

engine

[value, flag, min, max]

dimensionless

yes

payload.instrument.broadening.parameters.asym_beba_b1

engine

[value, flag, min, max]

dimensionless

yes

payload.instrument.broadening

engine

one of the peak_type variants

yes

variant cwl-thompson-cox-hastings:

payload.instrument.broadening.cutoff_fwhm

engine

number

dimensionless

no

CrysPy only: peaks computed within this many FWHM; left out: no cutoff (full tails)

payload.instrument.broadening.peak_type

engine

"cwl-thompson-cox-hastings"

yes

payload.instrument.broadening.parameters

engine

block

yes

cwl-thompson-cox-hastings: pseudo-Voigt with FCJ axial-divergence asymmetry (CrysFML).

payload.instrument.broadening.parameters.broad_gauss_u

engine

[value, flag, min, max]

degree^2

yes

payload.instrument.broadening.parameters.broad_gauss_v

engine

[value, flag, min, max]

degree^2

yes

payload.instrument.broadening.parameters.broad_gauss_w

engine

[value, flag, min, max]

degree^2

yes

payload.instrument.broadening.parameters.broad_lorentz_x

engine

[value, flag, min, max]

degree

yes

payload.instrument.broadening.parameters.broad_lorentz_y

engine

[value, flag, min, max]

degree

yes

payload.instrument.broadening.parameters.asym_fcj_1

engine

[value, flag, min, max]

dimensionless

yes

FCJ S/L

payload.instrument.broadening.parameters.asym_fcj_2

engine

[value, flag, min, max]

dimensionless

yes

FCJ H/L

payload.background

engine

block

no

Left out: no background

payload.background.chebyshev

core

Chebyshev background (core block)

yes

Chebyshev polynomial background: num_coefficients, coefficients, refine_flag.

payload.phases

engine

object keyed by name

yes

payload.phases.<phase>

engine

block

yes

An easydiffraction phase: core’s space group, cell and atoms, plus scale.

payload.phases.<phase>.space_group

core

canonical space-group name (core)

yes

see the core fields

payload.phases.<phase>.unit_cell

core

unit cell (core block)

yes

see the core fields

payload.phases.<phase>.atoms

core

atoms (core block)

yes

see the core fields

payload.phases.<phase>.scale

engine

[value, flag, min, max]

arbitrary

yes

Phase scale factor, >= 0

payload.phases.<phase>.scattering_types

engine

object keyed by name

no

Ionic X-ray scattering types by atom label, CIF spelling (‘La3+’, ‘O1-‘); an atom left out scatters as the neutral element; cryspy calculator only, and only ions CrysPy has

payload.phases.<phase>.scattering_types.<name>

engine

string

yes

payload.phases.<phase>.preferred_orientation

engine

block

no

March-Dollase preferred orientation (one axis, march_r > 0, march_random_fract 0..1); cryspy calculator only – CrysFML ignores it; left out: none

payload.phases.<phase>.preferred_orientation.model

engine

"march_dollase"

yes

The only model in 0.1.0

payload.phases.<phase>.preferred_orientation.hkl

engine

list of 3

yes

Texture axis as Miller indices, not all zero

payload.phases.<phase>.preferred_orientation.ratio

engine

[value, flag, min, max]

yes

March coefficient r: 1 = random, < 1 platy, > 1 needle; > 0

payload.phases.<phase>.preferred_orientation.march_random_fract

engine

[value, flag, min, max]

yes

Fraction of the sample with no preferred orientation, 0..1 (easydiffraction ‘march_random_fract’)

payload.refinement_controls

engine

block

yes

How the pattern is calculated and fitted, all stated. lmfit runs only if a flag is set.

payload.refinement_controls.calculator

engine

"cryspy" | "crysfml"

yes

easydiffraction calculator; they compute different intensities and offer different peak types (EB-76..EB-79)

payload.refinement_controls.minimizer

engine

"lmfit (leastsq)"

yes

Minimizer (lmfit’s Levenberg-Marquardt only)

payload.refinement_controls.max_iterations

engine

integer

yes

easydiffraction max_iterations = lmfit max_nfev: the maximum number of function evaluations (not iterations)

payload.refinement_controls.chi_square_change_tolerance

engine

number

yes

Relative chi-square change that stops the fit (lmfit ftol)

payload.refinement_controls.parameter_change_tolerance

engine

number

yes

Relative parameter change that stops the fit (lmfit xtol)

payload.refinement_controls.gradient_tolerance

engine

number

yes

Gradient orthogonality that stops the fit (lmfit gtol)