diff ref struct Rietveld refinement for the Mac · powder diffraction with X-rays, synchrotron and neutrons · started October 2026

Proposal (draft)

The proposal draft, not decided

The app's feature set, and what goes in version 1, version 2 and later. Built from the FullProf inventory and the GSAS-II gap list. Each feature names its sources: an inventory entry, a gap or a requirement of the brief. Written for Josu to decide (log L019); a decision entry in the log will say what is adopted. The design questions Q1–Q6 are on the Design page.

A draft for Josu to decide, not a decision. Version 1 aims at the refinement a FullProf user does today on constant-wavelength data (laboratory X-rays, synchrotron, reactor neutrons): from the pattern to a published CIF, in one phase or several, with constraints and restraints. It runs inside the Mac app the brief asks for: live plot, interactive background, space groups, control-file builder and editor (R07–R14). Version 2 adds what makes the program complete for facility work: time of flight, joint and sequential refinement, rigid bodies, anisotropic microstructure. Later holds the rest of the FullProf inventory and the L012 list (magnetic, superspace, stacking faults, indexing, structure solution, 2D images, PDF). Where GSAS-II does something better than FullProf (L014), the draft takes the GSAS-II way, and says so.

39 features in version 1, 11 features in version 2, 9 features in later.

  • Version 1 is done when the command line and the app reproduce a set of reference refinements from manuals/fullprof/ to within their esd's: the Y2O3 laboratory X-ray tutorial, the MgAl2O4 spinel, the Co-doped YBCO neutron tutorial and the quantitative-analysis tutorial. Each one becomes a named test, as difes reproduces FOCUS.
  • Every feature has a test and a command-line path in the core before it has a menu in the app (CLAUDE.md).

Data and instruments

Feature What it does Draft tier From
P01
Constant-wavelength patterns
Laboratory X-rays with one wavelength or a Kα1/Kα2 doublet (ratio refinable), synchrotron X-rays, reactor neutrons; data with \(\sigma\), variable step kept. Version 1 FullProf: Laboratory X-rays, one or two wavelengths
FullProf: Synchrotron X-rays
FullProf: Constant-wavelength neutrons
FullProf: x, y, \(\sigma\) files with variable step
R03
P02
Data formats
xy/xye, FullProf free and instrument formats, GSAS fxye; Panalytical .xrdml and Bruker .brml/.raw read directly, so laboratory users need no conversion. Version 1 FullProf: Free-format and instrument data files
GSAS-II gap: Binary vendor and HDF5 powder formats
P03
Excluded regions set on the plot
Ranges removed from the fit, drawn and dragged on the plot as well as typed. Version 1 FullProf: Excluded regions
GSAS-II gap: Limits and excluded regions set on the plot
P04
Pattern simulation
A pattern calculated from the model without data, with optional Poisson noise; also the basis of the core's tests. Version 1 FullProf: Pattern calculation (simulation)
P05
Time-of-flight neutrons
TOF patterns with d from Zero, Dtt1, Dtt2; back-to-back exponentials ⊗ pseudo-Voigt; keyword resolution file per bank; multi-bank GSAS/ISIS files; TOF absorption.
decided Version 2 (L020): version 1 is constant wavelength only.
Version 2 FullProf: Time-of-flight neutrons
FullProf: TOF back-to-back exponentials ⊗ pseudo-Voigt
FullProf: TOF resolution file (Res=5, 6)
FullProf: Multi-bank TOF files (GSAS, ISIS)
FullProf: TOF absorption
P06
Joint multi-pattern refinement
Several patterns in one refinement (X-rays with neutrons, several banks), a weight per pattern, which phase contributes to which pattern, patterns switched on or off.
decided Version 2 (L020): it needs the multi-pattern machinery of version 2; the version 1 data model allows several patterns from the start.
Version 2 FullProf: Multi-pattern refinement
FullProf: Joint X-ray and neutron refinement
FullProf: Which phase contributes to which pattern
FullProf: Patterns switched on or off
P07
Maximum-likelihood weights, point reduction, minimum d per pattern
The less common data options of FullProf. Later FullProf: Weighting schemes
FullProf: Point reduction for fast runs
FullProf: Minimum d-spacing per pattern
P08
Energy-dispersive and pink-beam data
Energy as the scattering variable; pink-beam profiles. Later FullProf: Energy-dispersive X-rays
GSAS-II gap: Pink-beam profile

The crystal structure

Feature What it does Draft tier From
P09
Space groups, complete
All 230 groups in all settings from their symbols, or from user operators; operators, symmetry elements, Wyckoff positions and site symmetry available to the user (R12). Version 1 FullProf: Space group from its symbol
FullProf: User-given symmetry operators
R12
P10
Cell, atoms, occupancies, displacements
Lattice parameters; positions, occupancies, Biso and overall B; anisotropic β_ij with the site-symmetry restrictions applied automatically. Version 1 FullProf: Lattice parameters
FullProf: Atom positions
FullProf: Site occupancies
FullProf: Isotropic displacement parameters
FullProf: Overall displacement parameter
FullProf: Anisotropic displacement parameters
P11
Scattering factors
X-ray form factors and neutron scattering lengths from tables, user values, anomalous f′ and f″ per pattern. Version 1 FullProf: Scattering lengths and form factors
FullProf: Anomalous dispersion
P12
Distances, angles, bond-valence sums
Listed after each refinement and available to restraints. Version 1 FullProf: Bond distances, angles and bond-valence sums
P13
Symmetry-mode parametrisation
A distorted structure refined through the amplitudes of symmetry-adapted modes of a parent structure. Version 1 FullProf: Symmetry-mode parametrisation
P14
Special structure options
Molecular form factors, fixed partial structure factors, operator subsets per atom, reflections read instead of generated. Later FullProf: Special form factors for molecules
FullProf: Fixed partial structure factor
FullProf: Subset of operators per atom
FullProf: Reflections read instead of generated

Peak shapes and the instrument

Feature What it does Draft tier From
P15
Pseudo-Voigt and Thompson–Cox–Hastings with axial divergence
pV and TCH pV with the Finger–Cox–Jephcoat asymmetry; Caglioti widths; a profile per phase. Version 1 FullProf: Pseudo-Voigt
FullProf: Thompson–Cox–Hastings pseudo-Voigt with axial divergence
FullProf: Angular dependence of the width (CW)
FullProf: Peak-shape choice per phase
P16
Instrumental resolution file
The instrument's widths described once, from a standard, so that sample size and strain are refined apart from the instrument. Version 1 FullProf: Instrumental resolution file (CW)
FullProf: Instrumental resolution from pseudo-Voigt parameters (Res=-1)
P17
Empirical asymmetry
The four-parameter asymmetry correction below a set angle. Version 1 FullProf: Empirical peak asymmetry
P18
Peak positions
Zero, sample displacement and transparency (also per phase), wavelength refinement. Version 1 FullProf: Zero shift
FullProf: Sample displacement and transparency
FullProf: Phase-dependent shifts
FullProf: Wavelength refinement
P19
Other profile functions
Gaussian, Lorentzian, Pearson VII, split and tripled pseudo-Voigt, numerical profiles, tabulated resolution. Later FullProf: Pearson VII
FullProf: Split pseudo-Voigt
FullProf: Tripled pseudo-Voigt
FullProf: Numerical peak shape
FullProf: Tabulated resolution with axial divergence (Res=8)
P20
Instrument from fundamental parameters
The resolution file computed from the diffractometer geometry instead of refined on a standard. Later GSAS-II gap: Instrument profile from fundamental parameters

Background

Feature What it does Draft tier From
P21
Background functions
Chebyshev series, refinable interpolated points (linear or spline), polynomial. Version 1 FullProf: Chebyshev background
FullProf: Interpolated background points
FullProf: Cubic-spline background
FullProf: Polynomial background
P22
Background on the plot, by hand and automatic
Points added, moved and deleted with the mouse; automatic points by asymmetric least squares; any function fitted to the points as a starting background (R11). Version 1 FullProf: Interactive background points
FullProf: Automatic background points (FullProfAPP)
GSAS-II gap: Background function fitted to fixed points, with auto-background
R11
P23
Further background terms
Debye-like terms for amorphous scattering, background from a file or stored profiles, background peaks, Fourier-filtered background. Version 2 FullProf: Debye-like terms
FullProf: Background from a file
FullProf: Background profiles from files (linear combination)
FullProf: Fourier-filtered background
GSAS-II gap: Background peaks

Size and strain

Feature What it does Draft tier From
P24
Isotropic size and strain
Size and strain from the sample widths over the resolution file, with apparent size and strain reported per reflection. Version 1 FullProf: Isotropic size and strain
FullProf: Microstructure file (.mic)
P25
Anisotropic size and strain
Strain by the quartic form (Stephens) or spherical harmonics; size by ellipsoid or spherical harmonics; platelets and needles; plots of the refined models. Version 2 FullProf: Anisotropic strain, quartic form
FullProf: Anisotropic strain, spherical harmonics
FullProf: Anisotropic size, quadratic form
FullProf: Anisotropic size, spherical harmonics
FullProf: Platelets and needles
GSAS-II gap: Plots of the refined size, strain and orientation models
P26
Selective broadening and defect shifts
Rule-based broadening and shifts for reflection classes, per-reflection widths. Later FullProf: Selective size broadening
FullProf: Defect and stress peak shifts
FullProf: Per-reflection width and shift

Intensity corrections

Feature What it does Draft tier From
P27
Lorentz–polarisation by geometry
Bragg–Brentano, Debye–Scherrer, transmission, synchrotron; monochromator polarisation. Version 1 FullProf: Lorentz–polarisation by geometry
FullProf: Monochromator polarisation
FullProf: Synchrotron polarisation
P28
Preferred orientation along one axis
March–Dollase and exponential functions about a direction. Version 1 FullProf: Preferred orientation, March–Dollase
FullProf: Preferred orientation, exponential
P29
Absorption and microabsorption
Cylinder (μR, Lobanov–Alte da Veiga) and flat-plate absorption; Bragg–Brentano microabsorption (surface roughness). Version 1 FullProf: Cylinder absorption
FullProf: Lobanov–Alte da Veiga absorption for cylinders
FullProf: Flat-plate absorption
FullProf: Bragg–Brentano microabsorption
P30
Texture beyond one axis
Multi-axial March–Dollase; spherical-harmonic preferred orientation as in GSAS-II, which FullProf lacks. Version 2 FullProf: Multi-axial March–Dollase (Nor=2)
GSAS-II gap: Spherical-harmonic preferred orientation
P31
Further corrections
Extinction for CW powders (a GSAS-II feature), layered samples, anvil cells, beam overflow, user correction tables. Later GSAS-II gap: Extinction for constant-wavelength powder data
FullProf: Layered samples in Bragg–Brentano (Ilo=5)
FullProf: March–Dollase–Wright orientation for anvil cells (Nor=3)
FullProf: Beam overflow at low angle
FullProf: User intensity corrections

Several phases and quantitative analysis

Feature What it does Draft tier From
P32
Several phases per pattern
Any number of phases, each with its scale, cell, profile and structure. Version 1 FullProf: Several phases per pattern
P33
Quantitative phase analysis
Weight fractions with esd's from the scale factors, Brindley microabsorption, amorphous content with an internal standard. Version 1 FullProf: Quantitative phase analysis
FullProf: Brindley microabsorption
FullProf: Amorphous content with an internal standard
P34
Phase search against open databases
Candidate phases fetched from the COD and tested by full-profile refinement. Later FullProf: Full-profile phase search (FullProfAPP)
FullProf: CIF download from the COD (FullProfAPP)

Le Bail and Pawley

Feature What it does Draft tier From
P35
Le Bail fit
Cell, space group and profile without a structure; extracted intensities written for structure solution. Version 1 FullProf: Le Bail fit (profile matching, constant scale)
FullProf: Extracted intensities file
P36
Pawley fit
Intensities refined as parameters, as in GSAS-II; FullProf has Le Bail only. Version 2 GSAS-II gap: Pawley refinement

Parameters, constraints, restraints

Feature What it does Draft tier From
P37
Named parameters, no numeric codewords
Every refinable quantity has a readable name (phase, pattern, atom, quantity) and is refined by name, as FullProf's VARY/FIX keywords and GSAS-II's parameter names do; numeric codes are not exposed. Version 1 FullProf: Keyword refinement (VARY/FIX)
FullProf: Refinement codes
GSAS-II gap: Linear constraint equations and New Var parameters
P38
Constraints
Equivalences with multipliers, constraint equations and new variables defined as sums of parameters; symmetry constraints generated automatically. Version 1 FullProf: Strict linear constraints by shared codes
FullProf: Keyword constraints (EQUAL, PEQU, SAME_BISO)
GSAS-II gap: Linear constraint equations and New Var parameters
P39
Limits on parameters
Lower and upper bounds, applied during the fit. Version 1 FullProf: Hard limits on parameters
P40
Restraints
Distance, angle and linear restraints in version 1; plane, chiral and general (expression) restraints and Mogul import later. Version 1 FullProf: Distance restraints
FullProf: Angle restraints
FullProf: Linear restraints
GSAS-II gap: General restraints as Python expressions
GSAS-II gap: Plane and chiral-volume restraints
P41
Rigid bodies and TLS
Groups in Cartesian, spherical or Z-matrix coordinates placed by position and orientation, satellite groups, TLS.
decided Version 2 (L020); distance, angle and linear restraints stay in version 1.
Version 2 FullProf: Rigid bodies
FullProf: Satellite groups
FullProf: TLS

The least-squares engine

Feature What it does Draft tier From
P42
Least squares with analytic derivatives
Damped least squares (Levenberg–Marquardt with SVD against correlations, as GSAS-II; FullProf uses Gauss–Newton with relaxation factors), divergence control, convergence on shift/esd.
decided Levenberg–Marquardt with SVD against correlations (L020), the GSAS-II way, more robust than Gauss–Newton with relaxation factors when parameters correlate.
Version 1 FullProf: Least-squares minimiser
FullProf: Cycles and convergence
FullProf: Relaxation factors
FullProf: Local divergence control
GSAS-II gap: Levenberg–Marquardt least squares with SVD
P43
Agreement factors and statistics
Rp, Rwp, Rexp, \(\chi^2\), background-corrected R, R_Bragg and R_F per phase, Durbin–Watson, the Bérar factor. Version 1 FullProf: Agreement factors
FullProf: Model-selection statistics
FullProf: Bérar factor for correlated residuals
P44
Covariance and uncertainties
Correlation matrix shown and searchable; the esd of any derived quantity or user expression from the full covariance. Version 1 FullProf: Correlation matrix
FullProf: Standard deviations
GSAS-II gap: Any expression with its s.u. from the full covariance
GSAS-II gap: Interactive correlation and shift displays
P45
Refinement diagnostics
Parameter impact (which unrefined parameter would lower \(\chi^2\) most), normal probability plot, refinement analysis. Version 2 GSAS-II gap: Parameter impact
GSAS-II gap: Normal probability plot
FullProf: Refinement analysis

The app and the workflow

Feature What it does Draft tier From
P46
One project document
Data, model, constraints, results and refinement history in one document per window, with undo and redo of every model change (R01), as GSAS-II's project and unlike FullProf's .pcr plus side files. Version 1 GSAS-II gap: One project file with a data tree
R01
P47
Readable control file and FullProf import
A text control file a person can read and diff, written and read by the core; existing .pcr files imported (Q3).
decided Q3 (L020): a new readable text format of our own, with a .pcr importer so that FullProf users bring their work.
Version 1 FullProf: The .pcr control file
R13
R14
P48
Control-file builder
Dialogs and tables that write the control file, keeping dependent counts consistent (R13). Version 1 FullProf: EdPCR
FullProf: Manual refinement window (FullProfAPP)
R13
P49
Dedicated editor
Syntax colouring, completion of keywords, phases and atoms, inline errors from the core's parser, outline, jump from output to parameter (R14, Q4). Version 1 R14
P50
Live plot each cycle
Observed, calculated, difference and reflection markers redrawn after every cycle, with R-factors per cycle (R08, Q5). Version 1 FullProf: Live display during refinement
R08
P51
Data and result graphics
Zoom, axes in 2\(\theta\), d or Q, linear/√/log intensity, per-phase contributions, (obs−calc)/\(\sigma\) and cumulative \(\chi^2\), hkl on the markers, structure view; peak search and single-peak fitting (R09, R10). Version 1 FullProf: WinPLOTR Rietveld plot
FullProf: Interactive peak search and fitting
GSAS-II gap: Fit-diagnostic plot modes
R09
R10
P52
Accept or reject, and a history
After a refinement the user keeps or discards the result; every refinement is logged with its R-factors and can be returned to. Version 1 GSAS-II gap: Accept or reject a refinement
GSAS-II gap: Project notebook with logged parameters
P53
Command line, then scripting
Every feature on the command line from the start (CLAUDE.md); a Python scripting interface to the core in version 2.
decided Q1 (L021): the core is Rust; the Python interface is bindings to it (PyO3), in version 2.
Version 1 FullProf: Command-line run
GSAS-II gap: Python scripting API
P54
Sequential and parametric refinement
A series of patterns refined in turn, then refined parameters plotted with esd's and fitted to equations of temperature or pressure. Version 2 FullProf: Sequential refinement
FullProf: Sequential multi-pattern refinement
GSAS-II gap: Pseudo-variables and parametric fits of sequential results
GSAS-II gap: Histogram wildcards in sequential constraints
P55
Guided refinement
A refinement built as named steps in the documented order (scale; zero, background, cell; …), run in one go. Version 2 FullProf: Automatic refinement workflow (FullProfAPP)
FullProf: Refinement strategy guidance
P56
Batch processing
Many patterns refined with the same model as a grid, a job scheduler. Later FullProf: Batch and multi-pattern grid (FullProfAPP)

Output

Feature What it does Draft tier From
P57
CIF and the standard outputs
Full CIF of structure and profile ready for deposition; listing and summary; reflection lists; calculated profiles per phase; distances and angles. Version 1 FullProf: CIF, CFL, FST and VESTA files
FullProf: Main listing (.out)
FullProf: Summary (.sum)
FullProf: Reflection lists (.hkl)
FullProf: Per-phase profiles (.sub)
FullProf: Distances and bond valences (.dis)
P58
Publication plots
The Rietveld plot exported as PDF and SVG, editable. Version 1 GSAS-II gap: Publication plots
P59
Series outputs and interchange files
Multi-block CIF and CSV of a series; Fourier and structure files for other programs. Version 2 GSAS-II gap: Sequential results as multi-block CIF and CSV
FullProf: Fourier files (.fou)
FullProf: Structure files for drawing programs

Kept for later (L012)

Kept for later, as set in L012: magnetic structures, modulated and superspace structures, stacking faults, indexing, structure solution, 2D image integration, PDF and total scattering. FullProf has each (one line each on the FullProf page); none is in versions 1 or 2. The data model of version 1 should not close the door to magnetic phases (moments on atoms, magnetic space groups), which FullProf users expect next.

Decided by Josu (L020, L021)

  • TOF (P05): version 2. Version 1 is constant wavelength only.
  • Joint X-ray + neutron (P06): version 2, with a data model that allows several patterns from the start.
  • Rigid bodies (P41): version 2. Distance, angle and linear restraints are in version 1.
  • The minimiser (P42): Levenberg–Marquardt with SVD against correlations, as GSAS-II.
  • The control file (P47, Q3): a new readable text format of our own, with a .pcr importer.
  • The reference refinements that define 'version 1 is done': the four tutorials named above (Y2O3, MgAl2O4, Co-doped YBCO, quantitative phase analysis).
  • Q1, the language of the core (L021): Rust, with Python as the scripting interface through bindings in version 2 (P48).