EasyDiffraction and crysta

Reusing crystallographic libraries, and building our own

Andrew Sazonov

European Spallation Source (ESS)
Data Management and Scientific Computing (DMSC)

LENS WG4 · Garching · 7 Oct 2026

EasyDiffraction and crysta

Reusing crystallographic libraries, and building our own

Andrew Sazonov

European Spallation Source (ESS)
Data Management and Scientific Computing (DMSC)

LENS WG4 · Garching · 7 Oct 2026

EasyDiffraction and crysta

Reusing crystallographic libraries, and building our own

Andrew Sazonov

European Spallation Source (ESS)
Data Management and Scientific Computing (DMSC)

LENS WG4 · Garching · 7 Oct 2026

  • 1Why new software
  • 2EasyDiffraction
  • 3crysta
  • 4Status and plans
  • 1Why new software
  • 2EasyDiffraction
  • 3crysta
  • 4Status and plans
  • 1Why new software
  • 2EasyDiffraction
  • 3crysta
  • 4Status and plans
  • 1Why new software
  • 2EasyDiffraction
  • 3crysta
  • 4Status and plans
  • 1Why new software
  • 2EasyDiffraction
  • 3crysta
  • 4Status and plans

1.1Why new software

Diffraction analysis: many tools

Diffraction programs

FullProf Suite · Jana2020 · GSAS-II · SHELX · MAUD · FOX · Mag2Pol · TOPAS · HighScore · PDFgui · …

Diffraction libraries

CrysFML · CCSL · cctbx · pyobjcryst · CrysPy · PDFfit2 · GSAS-II · …

Many tools, each with its own interface.

1.1Why new software

Diffraction analysis: many tools

Diffraction programs

FullProf Suite · Jana2020 · GSAS-II · SHELX · MAUD · FOX · Mag2Pol · TOPAS · HighScore · PDFgui · …

Diffraction libraries

CrysFML · CCSL · cctbx · pyobjcryst · CrysPy · PDFfit2 · GSAS-II · …

Many tools, each with its own interface.

1.1Why new software

Diffraction analysis: many tools

Diffraction programs

FullProf Suite · Jana2020 · GSAS-II · SHELX · MAUD · FOX · Mag2Pol · TOPAS · HighScore · PDFgui · …

Diffraction libraries

CrysFML · CCSL · cctbx · pyobjcryst · CrysPy · PDFfit2 · GSAS-II · …

Many tools, each with its own interface.

1.1Why new software

Diffraction analysis: many tools

Diffraction programs

FullProf Suite · Jana2020 · GSAS-II · SHELX · MAUD · FOX · Mag2Pol · TOPAS · HighScore · PDFgui · …

Diffraction libraries

CrysFML · CCSL · cctbx · pyobjcryst · CrysPy · PDFfit2 · GSAS-II · …

Many tools, each with its own interface.

1.2Why new software

What users run into

Gaps for the ESS instruments, and a steep start for new users.

1.2Why new software

What users run into

Gaps for the ESS instruments, and a steep start for new users.

1.2Why new software

What users run into

Gaps for the ESS instruments, and a steep start for new users.

1.2Why new software

What users run into

Gaps for the ESS instruments, and a steep start for new users.

1.2Why new software

What users run into

Gaps for the ESS instruments, and a steep start for new users.

1.2Why new software

What users run into

Gaps for the ESS instruments, and a steep start for new users.

1.2Why new software

What users run into

Gaps for the ESS instruments, and a steep start for new users.

1.2Why new software

What users run into

Gaps for the ESS instruments, and a steep start for new users.

1.3Why new software

Needs

Extend functionality for the ESS instruments

Improve usability for every user

Simplify maintenance for a small team

No existing program offers all three.

1.3Why new software

Needs

Extend functionality for the ESS instruments

Improve usability for every user

Simplify maintenance for a small team

No existing program offers all three.

1.3Why new software

Needs

Extend functionality for the ESS instruments

Improve usability for every user

Simplify maintenance for a small team

No existing program offers all three.

1.3Why new software

Needs

Extend functionality for the ESS instruments

Improve usability for every user

Simplify maintenance for a small team

No existing program offers all three.

1.3Why new software

Needs

Extend functionality for the ESS instruments

Improve usability for every user

Simplify maintenance for a small team

No existing program offers all three.

  • 1Why new software
  • 2EasyDiffraction
  • 3crysta
  • 4Status and plans

2.1EasyDiffraction

Built on existing libraries

Diffraction programs

FullProf Suite · Jana2020 · GSAS-II · SHELX · MAUD · FOX · Mag2Pol · TOPAS · HighScore · PDFgui · …

Diffraction libraries

CrysFML · CCSL · cctbx · pyobjcryst · CrysPy · PDFfit2 · GSAS-II · …

We start from the libraries, not the programs.

2.1EasyDiffraction

Built on existing libraries

Diffraction programs

FullProf Suite · Jana2020 · GSAS-II · SHELX · MAUD · FOX · Mag2Pol · TOPAS · HighScore · PDFgui · …

Diffraction libraries

CrysFML · CCSL · cctbx · pyobjcryst · CrysPy · PDFfit2 · GSAS-II · …

We start from the libraries, not the programs.

2.1EasyDiffraction

Built on existing libraries

Diffraction programs

FullProf Suite · Jana2020 · GSAS-II · SHELX · MAUD · FOX · Mag2Pol · TOPAS · HighScore · PDFgui · …

Diffraction libraries

CrysFML · CCSL · cctbx · pyobjcryst · CrysPy · PDFfit2 · GSAS-II · …

We start from the libraries, not the programs.

2.1EasyDiffraction

Built on existing libraries

Diffraction programs

FullProf Suite · Jana2020 · GSAS-II · SHELX · MAUD · FOX · Mag2Pol · TOPAS · HighScore · PDFgui · …

Diffraction libraries

CrysFML · CCSL · cctbx · pyobjcryst · CrysPy · PDFfit2 · GSAS-II · …

We start from the libraries, not the programs.

2.2EasyDiffraction

What each library brings

CrysFMLmature, wide coverage · Fortran

the CrysFML repository at code.ill.fr

CrysPymore polarised-neutron options · Python

the CrysPy home page, cryspy.fr

PDFfit2pair distribution function · C++

the DiffPy home page with a PDFfit2 fit

Each for the functionality we need.

2.2EasyDiffraction

What each library brings

CrysFMLmature, wide coverage · Fortran

the CrysFML repository at code.ill.fr

CrysPymore polarised-neutron options · Python

the CrysPy home page, cryspy.fr

PDFfit2pair distribution function · C++

the DiffPy home page with a PDFfit2 fit

Each for the functionality we need.

2.2EasyDiffraction

What each library brings

CrysFMLmature, wide coverage · Fortran

the CrysFML repository at code.ill.fr

CrysPymore polarised-neutron options · Python

the CrysPy home page, cryspy.fr

PDFfit2pair distribution function · C++

the DiffPy home page with a PDFfit2 fit

Each for the functionality we need.

2.2EasyDiffraction

What each library brings

CrysFMLmature, wide coverage · Fortran

the CrysFML repository at code.ill.fr

CrysPymore polarised-neutron options · Python

the CrysPy home page, cryspy.fr

PDFfit2pair distribution function · C++

the DiffPy home page with a PDFfit2 fit

Each for the functionality we need.

2.2EasyDiffraction

What each library brings

CrysFMLmature, wide coverage · Fortran

the CrysFML repository at code.ill.fr

CrysPymore polarised-neutron options · Python

the CrysPy home page, cryspy.fr

PDFfit2pair distribution function · C++

the DiffPy home page with a PDFfit2 fit

Each for the functionality we need.

2.3EasyDiffraction

What we rely on

Calculations come from the libraries; the interface is ours.

EasyDiffraction application EasyDiffraction library Calculation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python Minimisation engines lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application

2.3EasyDiffraction

What we rely on

Calculations come from the libraries; the interface is ours.

EasyDiffraction application EasyDiffraction library Calculation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python Minimisation engines lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application

2.3EasyDiffraction

What we rely on

Calculations come from the libraries; the interface is ours.

EasyDiffraction application EasyDiffraction library Calculation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python Minimisation engines lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application

2.3EasyDiffraction

What we rely on

Calculations come from the libraries; the interface is ours.

EasyDiffraction application EasyDiffraction library Calculation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python Minimisation engines lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application

2.3EasyDiffraction

What we rely on

Calculations come from the libraries; the interface is ours.

EasyDiffraction application EasyDiffraction library Calculation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python Minimisation engines lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application

2.3EasyDiffraction

What we rely on

Calculations come from the libraries; the interface is ours.

EasyDiffraction application EasyDiffraction library Calculation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python Minimisation engines lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application

2.3EasyDiffraction

What we rely on

Calculations come from the libraries; the interface is ours.

EasyDiffraction application EasyDiffraction library Calculation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python Minimisation engines lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application

2.3EasyDiffraction

What we rely on

Calculations come from the libraries; the interface is ours.

EasyDiffraction application EasyDiffraction library Calculation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python Minimisation engines lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application

2.4EasyDiffraction

Several years of improving UI/UX

2019 · the first mock-up, for diffraction

the 2019 mock-up the 2020 design the 2021 design the 2023 to 2025 application the 2026 application

The functionality grew; the user interface stayed simple.

2.4EasyDiffraction

Several years of improving UI/UX

2019 · the first mock-up, for diffraction

the 2019 mock-up the 2020 design the 2021 design the 2023 to 2025 application the 2026 application

The functionality grew; the user interface stayed simple.

2.4EasyDiffraction

Several years of improving UI/UX

2020 · a simpler workflow

the 2019 mock-up the 2020 design the 2021 design the 2023 to 2025 application the 2026 application

The functionality grew; the user interface stayed simple.

2.4EasyDiffraction

Several years of improving UI/UX

2021 · cleaner, lighter

the 2019 mock-up the 2020 design the 2021 design the 2023 to 2025 application the 2026 application

The functionality grew; the user interface stayed simple.

2.4EasyDiffraction

Several years of improving UI/UX

2023–2025 · the same shape, easier to use

the 2019 mock-up the 2020 design the 2021 design the 2023 to 2025 application the 2026 application

The functionality grew; the user interface stayed simple.

2.4EasyDiffraction

Several years of improving UI/UX

2026 · more functionality, still intuitive

the 2019 mock-up the 2020 design the 2021 design the 2023 to 2025 application the 2026 application

The functionality grew; the user interface stayed simple.

2.4EasyDiffraction

Several years of improving UI/UX

2026 · more functionality, still intuitive

the 2019 mock-up the 2020 design the 2021 design the 2023 to 2025 application the 2026 application

The functionality grew; the user interface stayed simple.

2.5EasyDiffraction

Reviewed by UX experts

Two workshops with Design Psychology, a UX consultancy.

the Design Psychology home page an e-mail from Rune Nørager about the easyDiffraction interface

Their verdict: a well-designed interface.

2.5EasyDiffraction

Reviewed by UX experts

Two workshops with Design Psychology, a UX consultancy.

the Design Psychology home page an e-mail from Rune Nørager about the easyDiffraction interface

Their verdict: a well-designed interface.

2.5EasyDiffraction

Reviewed by UX experts

Then they reviewed our interface.

the Design Psychology home page an e-mail from Rune Nørager about the easyDiffraction interface

Their verdict: a well-designed interface.

2.5EasyDiffraction

Reviewed by UX experts

Then they reviewed our interface.

the Design Psychology home page an e-mail from Rune Nørager about the easyDiffraction interface

Their verdict: a well-designed interface.

2.5EasyDiffraction

Reviewed by UX experts

Then they reviewed our interface.

the Design Psychology home page an e-mail from Rune Nørager about the easyDiffraction interface

Their verdict: a well-designed interface.

2.6EasyDiffraction

Three ways to run the same workflow

Graphical interfacefor users who prefer to click

the application

Command linefor command-line enthusiasts

the same refinement run from a terminal

Python libraryfor those who prefer scripts/Jupyter

a notebook using the library

The same project, whichever way you open it.

2.6EasyDiffraction

Three ways to run the same workflow

Graphical interfacefor users who prefer to click

the application

Command linefor command-line enthusiasts

the same refinement run from a terminal

Python libraryfor those who prefer scripts/Jupyter

a notebook using the library

The same project, whichever way you open it.

2.6EasyDiffraction

Three ways to run the same workflow

Graphical interfacefor users who prefer to click

the application

Command linefor command-line enthusiasts

the same refinement run from a terminal

Python libraryfor those who prefer scripts/Jupyter

a notebook using the library

The same project, whichever way you open it.

2.6EasyDiffraction

Three ways to run the same workflow

Graphical interfacefor users who prefer to click

the application

Command linefor command-line enthusiasts

the same refinement run from a terminal

Python libraryfor those who prefer scripts/Jupyter

a notebook using the library

The same project, whichever way you open it.

2.6EasyDiffraction

Three ways to run the same workflow

Graphical interfacefor users who prefer to click

the application

Command linefor command-line enthusiasts

the same refinement run from a terminal

Python libraryfor those who prefer scripts/Jupyter

a notebook using the library

The same project, whichever way you open it.

2.7EasyDiffraction

Same look and feel, different technique

EasyDiffractiona powder pattern and a crystal structure
EasyDiffraction, analysis screen
EasyReflectometrya reflectivity curve and a layer stack
EasyReflectometry, analysis screen
EasyTextureraw detector data, before any model
EasyTexture, raw-data screen

The same layout works for other techniques, even without fitting.

2.7EasyDiffraction

Same look and feel, different technique

EasyDiffractiona powder pattern and a crystal structure
EasyDiffraction, analysis screen
EasyReflectometrya reflectivity curve and a layer stack
EasyReflectometry, analysis screen
EasyTextureraw detector data, before any model
EasyTexture, raw-data screen

The same layout works for other techniques, even without fitting.

2.7EasyDiffraction

Same look and feel, different technique

EasyDiffractiona powder pattern and a crystal structure
EasyDiffraction, analysis screen
EasyReflectometrya reflectivity curve and a layer stack
EasyReflectometry, analysis screen
EasyTextureraw detector data, before any model
EasyTexture, raw-data screen

The same layout works for other techniques, even without fitting.

2.7EasyDiffraction

Same look and feel, different technique

EasyDiffractiona powder pattern and a crystal structure
EasyDiffraction, analysis screen
EasyReflectometrya reflectivity curve and a layer stack
EasyReflectometry, analysis screen
EasyTextureraw detector data, before any model
EasyTexture, raw-data screen

The same layout works for other techniques, even without fitting.

2.7EasyDiffraction

Same look and feel, different technique

EasyDiffractiona powder pattern and a crystal structure
EasyDiffraction, analysis screen
EasyReflectometrya reflectivity curve and a layer stack
EasyReflectometry, analysis screen
EasyTextureraw detector data, before any model
EasyTexture, raw-data screen

The same layout works for other techniques, even without fitting.

2.8EasyDiffraction

What became reusable

backend · objects, parameters, fitting, I/O frontend · screens, workflow, controls Diffraction library application Reflectometry library application and more

With EasyScience, a new technique adds only its science.

2.8EasyDiffraction

What became reusable

backend · objects, parameters, fitting, I/O frontend · screens, workflow, controls Diffraction library application Reflectometry library application and more

With EasyScience, a new technique adds only its science.

2.8EasyDiffraction

What became reusable

backend · objects, parameters, fitting, I/O frontend · screens, workflow, controls Diffraction library application Reflectometry library application and more

With EasyScience, a new technique adds only its science.

2.8EasyDiffraction

What became reusable

backend · objects, parameters, fitting, I/O frontend · screens, workflow, controls Diffraction library application Reflectometry library application and more

With EasyScience, a new technique adds only its science.

2.8EasyDiffraction

What became reusable

backend · objects, parameters, fitting, I/O frontend · screens, workflow, controls Diffraction library application Reflectometry library application and more

With EasyScience, a new technique adds only its science.

2.8EasyDiffraction

What became reusable

backend · objects, parameters, fitting, I/O frontend · screens, workflow, controls Diffraction library application Reflectometry library application and more

With EasyScience, a new technique adds only its science.

2.9EasyDiffraction

Where EasyScience is used today

easyscience.org · github.com/easyscience

analysisrunning diffraction
analysisrunning reflectometry
analysisnew quasielastic neutron scattering
analysisnew Bragg-edge imaging
reductionexternal textureJCNS · MLZGöttingen
modellingnew molecular structuresShapespyreChalmers

Projects at different stages, some with partners.

2.9EasyDiffraction

Where EasyScience is used today

easyscience.org · github.com/easyscience

analysisrunning diffraction
analysisrunning reflectometry
analysisnew quasielastic neutron scattering
analysisnew Bragg-edge imaging
reductionexternal textureJCNS · MLZGöttingen
modellingnew molecular structuresShapespyreChalmers

Projects at different stages, some with partners.

2.9EasyDiffraction

Where EasyScience is used today

easyscience.org · github.com/easyscience

analysisrunning diffraction
analysisrunning reflectometry
analysisnew quasielastic neutron scattering
analysisnew Bragg-edge imaging
reductionexternal textureJCNS · MLZGöttingen
modellingnew molecular structuresShapespyreChalmers

Projects at different stages, some with partners.

2.9EasyDiffraction

Where EasyScience is used today

easyscience.org · github.com/easyscience

analysisrunning diffraction
analysisrunning reflectometry
analysisnew quasielastic neutron scattering
analysisnew Bragg-edge imaging
reductionexternal textureJCNS · MLZGöttingen
modellingnew molecular structuresShapespyreChalmers

Projects at different stages, some with partners.

2.9EasyDiffraction

Where EasyScience is used today

easyscience.org · github.com/easyscience

analysisrunning diffraction
analysisrunning reflectometry
analysisnew quasielastic neutron scattering
analysisnew Bragg-edge imaging
reductionexternal textureJCNS · MLZGöttingen
modellingnew molecular structuresShapespyreChalmers

Projects at different stages, some with partners.

2.9EasyDiffraction

Where EasyScience is used today

easyscience.org · github.com/easyscience

analysisrunning diffraction
analysisrunning reflectometry
analysisnew quasielastic neutron scattering
analysisnew Bragg-edge imaging
reductionexternal textureJCNS · MLZGöttingen
modellingnew molecular structuresShapespyreChalmers

Projects at different stages, some with partners.

  • 1Why new software
  • 2EasyDiffraction
  • 3crysta
  • 4Status and plans

3.1crysta

Back to diffraction: what analysis needs

Large series · 1,000 datasets × 100 patterns temperature, field, time

Multidimensional data · huge parameter spaces 2D and 3D detectors

Automation · experiments that run themselves no human in the loop

EasyDiffraction works today, but not fast enough.

3.1crysta

Back to diffraction: what analysis needs

Large series · 1,000 datasets × 100 patterns temperature, field, time

Multidimensional data · huge parameter spaces 2D and 3D detectors

Automation · experiments that run themselves no human in the loop

EasyDiffraction works today, but not fast enough.

3.1crysta

Back to diffraction: what analysis needs

Large series · 1,000 datasets × 100 patterns temperature, field, time

Multidimensional data · huge parameter spaces 2D and 3D detectors

Automation · experiments that run themselves no human in the loop

EasyDiffraction works today, but not fast enough.

3.1crysta

Back to diffraction: what analysis needs

Large series · 1,000 datasets × 100 patterns temperature, field, time

Multidimensional data · huge parameter spaces 2D and 3D detectors

Automation · experiments that run themselves no human in the loop

EasyDiffraction works today, but not fast enough.

3.1crysta

Back to diffraction: what analysis needs

Large series · 1,000 datasets × 100 patterns temperature, field, time

Multidimensional data · huge parameter spaces 2D and 3D detectors

Automation · experiments that run themselves no human in the loop

EasyDiffraction works today, but not fast enough.

3.2crysta

AI in crystallography

IUCr 2026 logo

27th Congress and General Assembly
of the International Union of CrystallographyCalgary, August 2026 · ≈ 1,800 attendees

AI or machine learning named in the title or abstract

23of 142 microsymposia

121of 839 microsymposium talks

69of 932 posters

AI is now widely used, from coding to experiment orchestration.

3.2crysta

AI in crystallography

IUCr 2026 logo

27th Congress and General Assembly
of the International Union of CrystallographyCalgary, August 2026 · ≈ 1,800 attendees

AI or machine learning named in the title or abstract

23of 142 microsymposia

121of 839 microsymposium talks

69of 932 posters

AI is now widely used, from coding to experiment orchestration.

3.2crysta

AI in crystallography

IUCr 2026 logo

27th Congress and General Assembly
of the International Union of CrystallographyCalgary, August 2026 · ≈ 1,800 attendees

AI or machine learning named in the title or abstract

23of 142 microsymposia

121of 839 microsymposium talks

69of 932 posters

AI is now widely used, from coding to experiment orchestration.

3.2crysta

AI in crystallography

IUCr 2026 logo

27th Congress and General Assembly
of the International Union of CrystallographyCalgary, August 2026 · ≈ 1,800 attendees

AI or machine learning named in the title or abstract

23of 142 microsymposia

121of 839 microsymposium talks

69of 932 posters

AI is now widely used, from coding to experiment orchestration.

3.2crysta

AI in crystallography

IUCr 2026 logo

27th Congress and General Assembly
of the International Union of CrystallographyCalgary, August 2026 · ≈ 1,800 attendees

AI or machine learning named in the title or abstract

23of 142 microsymposia

121of 839 microsymposium talks

69of 932 posters

AI is now widely used, from coding to experiment orchestration.

3.2crysta

AI in crystallography

IUCr 2026 logo

27th Congress and General Assembly
of the International Union of CrystallographyCalgary, August 2026 · ≈ 1,800 attendees

AI or machine learning named in the title or abstract

23of 142 microsymposia

121of 839 microsymposium talks

69of 932 posters

AI is now widely used, from coding to experiment orchestration.

3.2crysta

AI in crystallography

IUCr 2026 logo

27th Congress and General Assembly
of the International Union of CrystallographyCalgary, August 2026 · ≈ 1,800 attendees

AI or machine learning named in the title or abstract

23of 142 microsymposia

121of 839 microsymposium talks

69of 932 posters

AI is now widely used, from coding to experiment orchestration.

3.3crysta

A pilot project

the Wright brothers’ 1902 glider in flight

Can supervised AI build a fast crystallographic library?

3.3crysta

A pilot project

the Wright brothers’ 1902 glider in flight

Can supervised AI build a fast crystallographic library?

3.3crysta

A pilot project

the Wright brothers’ 1902 glider in flight

Can supervised AI build a fast crystallographic library?

3.4crysta

Meet crysta

EasyDiffraction application EasyDiffraction library Calculation engines Minimisation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application
crysta
Eigen · nanobind · CMake
crysta
C++ → Python

A new calculation and minimisation engine, built in-house.

3.4crysta

Meet crysta

EasyDiffraction application EasyDiffraction library Calculation engines Minimisation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application
crysta
Eigen · nanobind · CMake
crysta
C++ → Python

A new calculation and minimisation engine, built in-house.

3.4crysta

Meet crysta

EasyDiffraction application EasyDiffraction library Calculation engines Minimisation engines CrysPy Python CrysFML Fortran → Python PDFfit2 C++ → Python lmfit Python Bumps Python Python API Unified interface (Python) Python library Desktop application
crysta
Eigen · nanobind · CMake
crysta
C++ → Python

A new calculation and minimisation engine, built in-house.

3.5crysta

The test case

Sample · NCAF, Na2Ca3Al2F14 reference powder, cubic

Measurement · WISH at ISIS, banks 2 + 9 3977 points, 627 peaks

Refinement · 48 free parameters structure, profile, background

Method · weighted least squares same start, χ² ≈ 4.8 for all

Reference · FullProf 8.40 same model, one thread

One real case, the same for every code.

3.5crysta

The test case

Sample · NCAF, Na2Ca3Al2F14 reference powder, cubic

Measurement · WISH at ISIS, banks 2 + 9 3977 points, 627 peaks

Refinement · 48 free parameters structure, profile, background

Method · weighted least squares same start, χ² ≈ 4.8 for all

Reference · FullProf 8.40 same model, one thread

One real case, the same for every code.

3.5crysta

The test case

Sample · NCAF, Na2Ca3Al2F14 reference powder, cubic

Measurement · WISH at ISIS, banks 2 + 9 3977 points, 627 peaks

Refinement · 48 free parameters structure, profile, background

Method · weighted least squares same start, χ² ≈ 4.8 for all

Reference · FullProf 8.40 same model, one thread

One real case, the same for every code.

3.5crysta

The test case

Sample · NCAF, Na2Ca3Al2F14 reference powder, cubic

Measurement · WISH at ISIS, banks 2 + 9 3977 points, 627 peaks

Refinement · 48 free parameters structure, profile, background

Method · weighted least squares same start, χ² ≈ 4.8 for all

Reference · FullProf 8.40 same model, one thread

One real case, the same for every code.

3.5crysta

The test case

Sample · NCAF, Na2Ca3Al2F14 reference powder, cubic

Measurement · WISH at ISIS, banks 2 + 9 3977 points, 627 peaks

Refinement · 48 free parameters structure, profile, background

Method · weighted least squares same start, χ² ≈ 4.8 for all

Reference · FullProf 8.40 same model, one thread

One real case, the same for every code.

3.5crysta

The test case

Sample · NCAF, Na2Ca3Al2F14 reference powder, cubic

Measurement · WISH at ISIS, banks 2 + 9 3977 points, 627 peaks

Refinement · 48 free parameters structure, profile, background

Method · weighted least squares same start, χ² ≈ 4.8 for all

Reference · FullProf 8.40 same model, one thread

One real case, the same for every code.

3.5crysta

The test case

Sample · NCAF, Na2Ca3Al2F14 reference powder, cubic

Measurement · WISH at ISIS, banks 2 + 9 3977 points, 627 peaks

Refinement · 48 free parameters structure, profile, background

Method · weighted least squares same start, χ² ≈ 4.8 for all

Reference · FullProf 8.40 same model, one thread

One real case, the same for every code.

3.6crysta

Agreement of calculated patterns

NCAFWISH 2+93977 points627 peaks
FullProf’s calculated patterncrysta’s calculated pattern over FullProf’s, the difference below

Largest difference 3.9 of 7527 counts: 0.05 %.

3.6crysta

Agreement of calculated patterns

NCAFWISH 2+93977 points627 peaks
FullProf’s calculated patterncrysta’s calculated pattern over FullProf’s, the difference below

Largest difference 3.9 of 7527 counts: 0.05 %.

3.6crysta

Agreement of calculated patterns

NCAFWISH 2+93977 points627 peaks
FullProf’s calculated patterncrysta’s calculated pattern over FullProf’s, the difference below

Largest difference 3.9 of 7527 counts: 0.05 %.

3.6crysta

Agreement of calculated patterns

NCAFWISH 2+93977 points627 peaks
FullProf’s calculated patterncrysta’s calculated pattern over FullProf’s, the difference below

Largest difference 3.9 of 7527 counts: 0.05 %.

3.6crysta

Agreement of calculated patterns

NCAFWISH 2+93977 points627 peaks
FullProf’s calculated patterncrysta’s calculated pattern over FullProf’s, the difference below

Largest difference 3.9 of 7527 counts: 0.05 %.

3.7crysta

Agreement of refined parameters

NCAFWISH 2+93977 points627 peakssame startχ² ≈ 4.848 parameters
parametercrystaFullProfΔΔ/σ
background[21]164 ± 22187 ± 25−230.69
β0 (decay)0.00516 ± 0.000040.00518 ± 0.00004−0.0000230.39
… 44 more …
Ca1 Biso1.12 ± 0.131.12 ± 0.13−0.00170.01
F3 Biso1.85 ± 0.161.85 ± 0.17−0.00040.00

Every parameter within 0.69 σ of FullProf, median 0.05 σ.

3.7crysta

Agreement of refined parameters

NCAFWISH 2+93977 points627 peakssame startχ² ≈ 4.848 parameters
parametercrystaFullProfΔΔ/σ
background[21]164 ± 22187 ± 25−230.69
β0 (decay)0.00516 ± 0.000040.00518 ± 0.00004−0.0000230.39
… 44 more …
Ca1 Biso1.12 ± 0.131.12 ± 0.13−0.00170.01
F3 Biso1.85 ± 0.161.85 ± 0.17−0.00040.00

Every parameter within 0.69 σ of FullProf, median 0.05 σ.

3.7crysta

Agreement of refined parameters

NCAFWISH 2+93977 points627 peakssame startχ² ≈ 4.848 parameters
parametercrystaFullProfΔΔ/σ
background[21]164 ± 22187 ± 25−230.69
β0 (decay)0.00516 ± 0.000040.00518 ± 0.00004−0.0000230.39
… 44 more …
Ca1 Biso1.12 ± 0.131.12 ± 0.13−0.00170.01
F3 Biso1.85 ± 0.161.85 ± 0.17−0.00040.00

Every parameter within 0.69 σ of FullProf, median 0.05 σ.

3.7crysta

Agreement of refined parameters

NCAFWISH 2+93977 points627 peakssame startχ² ≈ 4.848 parameters
parametercrystaFullProfΔΔ/σ
background[21]164 ± 22187 ± 25−230.69
β0 (decay)0.00516 ± 0.000040.00518 ± 0.00004−0.0000230.39
… 44 more …
Ca1 Biso1.12 ± 0.131.12 ± 0.13−0.00170.01
F3 Biso1.85 ± 0.161.85 ± 0.17−0.00040.00

Every parameter within 0.69 σ of FullProf, median 0.05 σ.

3.7crysta

Agreement of refined parameters

NCAFWISH 2+93977 points627 peakssame startχ² ≈ 4.848 parameters
parametercrystaFullProfΔΔ/σ
background[21]164 ± 22187 ± 25−230.69
β0 (decay)0.00516 ± 0.000040.00518 ± 0.00004−0.0000230.39
… 44 more …
Ca1 Biso1.12 ± 0.131.12 ± 0.13−0.00170.01
F3 Biso1.85 ± 0.161.85 ± 0.17−0.00040.00

Every parameter within 0.69 σ of FullProf, median 0.05 σ.

3.7crysta

Agreement of refined parameters

NCAFWISH 2+93977 points627 peakssame startχ² ≈ 4.848 parameters
parametercrystaFullProfΔΔ/σ
background[21]164 ± 22187 ± 25−230.69
β0 (decay)0.00516 ± 0.000040.00518 ± 0.00004−0.0000230.39
… 44 more …
Ca1 Biso1.12 ± 0.131.12 ± 0.13−0.00170.01
F3 Biso1.85 ± 0.161.85 ± 0.17−0.00040.00

Every parameter within 0.69 σ of FullProf, median 0.05 σ.

3.8crysta

Speed: a full refinement

NCAFWISH 2+93977 points627 peaks1 threadlog scale
0.1 s1 s10 s100 s1000 s
CrysPy via EasyDiffraction (lmfit)
468 s / 643 calculations
CrysPy, direct (scipy)
329 s / 838 calculations
FullProf fp2k (Fortran)
13 s / 16 cycles
crysta (C++20)
3.2 s / 37 calculations

150× faster than today’s EasyDiffraction route.

3.8crysta

Speed: a full refinement

NCAFWISH 2+93977 points627 peaks1 threadlog scale
0.1 s1 s10 s100 s1000 s
CrysPy via EasyDiffraction (lmfit)
468 s / 643 calculations
CrysPy, direct (scipy)
329 s / 838 calculations
FullProf fp2k (Fortran)
13 s / 16 cycles
crysta (C++20)
3.2 s / 37 calculations

150× faster than today’s EasyDiffraction route.

3.8crysta

Speed: a full refinement

NCAFWISH 2+93977 points627 peaks1 threadlog scale
0.1 s1 s10 s100 s1000 s
CrysPy via EasyDiffraction (lmfit)
468 s / 643 calculations
CrysPy, direct (scipy)
329 s / 838 calculations
FullProf fp2k (Fortran)
13 s / 16 cycles
crysta (C++20)
3.2 s / 37 calculations

150× faster than today’s EasyDiffraction route.

3.8crysta

Speed: a full refinement

NCAFWISH 2+93977 points627 peaks1 threadlog scale
0.1 s1 s10 s100 s1000 s
CrysPy via EasyDiffraction (lmfit)
468 s / 643 calculations
CrysPy, direct (scipy)
329 s / 838 calculations
FullProf fp2k (Fortran)
13 s / 16 cycles
crysta (C++20)
3.2 s / 37 calculations

150× faster than today’s EasyDiffraction route.

3.8crysta

Speed: a full refinement

NCAFWISH 2+93977 points627 peaks1 threadlog scale
0.1 s1 s10 s100 s1000 s
CrysPy via EasyDiffraction (lmfit)
468 s / 643 calculations
CrysPy, direct (scipy)
329 s / 838 calculations
FullProf fp2k (Fortran)
13 s / 16 cycles
crysta (C++20)
3.2 s / 37 calculations

150× faster than today’s EasyDiffraction route.

3.8crysta

Speed: a full refinement

NCAFWISH 2+93977 points627 peaks1 threadlog scale
0.1 s1 s10 s100 s1000 s
CrysPy via EasyDiffraction (lmfit)
468 s / 643 calculations
CrysPy, direct (scipy)
329 s / 838 calculations
FullProf fp2k (Fortran)
13 s / 16 cycles
crysta (C++20)
3.2 s / 37 calculations

150× faster than today’s EasyDiffraction route.

3.8crysta

Speed: a full refinement

NCAFWISH 2+93977 points627 peaks1 threadlog scale
0.1 s1 s10 s100 s1000 s
CrysPy via EasyDiffraction (lmfit)
468 s / 643 calculations
CrysPy, direct (scipy)
329 s / 838 calculations
FullProf fp2k (Fortran)
13 s / 16 cycles
crysta (C++20)
3.2 s / 37 calculations

150× faster than today’s EasyDiffraction route.

3.9crysta

A lesson from IUCr 2026

a slide reading: I did not write this code. So I do not know where it is fragile.

Oleg Sobolev & Paul Adams, LBNL · AI-written CIF parser for cctbx · MS-116, IUCr 2026, Calgary

Nobody knows where AI-written code is fragile until it is tested.

3.9crysta

A lesson from IUCr 2026

a slide reading: I did not write this code. So I do not know where it is fragile.

Oleg Sobolev & Paul Adams, LBNL · AI-written CIF parser for cctbx · MS-116, IUCr 2026, Calgary

Nobody knows where AI-written code is fragile until it is tested.

3.9crysta

A lesson from IUCr 2026

a slide reading: I did not write this code. So I do not know where it is fragile.

Oleg Sobolev & Paul Adams, LBNL · AI-written CIF parser for cctbx · MS-116, IUCr 2026, Calgary

Nobody knows where AI-written code is fragile until it is tested.

3.10crysta

How the code is checked

Tests at every level unit, integration, system

Independent references FullProf, CrysFML, CrysPy

Strict builds warnings are errors, static analysis

Continuous integration every change, Linux, macOS and Windows

AI writes the code, so it is checked more, not less.

3.10crysta

How the code is checked

Tests at every level unit, integration, system

Independent references FullProf, CrysFML, CrysPy

Strict builds warnings are errors, static analysis

Continuous integration every change, Linux, macOS and Windows

AI writes the code, so it is checked more, not less.

3.10crysta

How the code is checked

Tests at every level unit, integration, system

Independent references FullProf, CrysFML, CrysPy

Strict builds warnings are errors, static analysis

Continuous integration every change, Linux, macOS and Windows

AI writes the code, so it is checked more, not less.

3.10crysta

How the code is checked

Tests at every level unit, integration, system

Independent references FullProf, CrysFML, CrysPy

Strict builds warnings are errors, static analysis

Continuous integration every change, Linux, macOS and Windows

AI writes the code, so it is checked more, not less.

3.10crysta

How the code is checked

Tests at every level unit, integration, system

Independent references FullProf, CrysFML, CrysPy

Strict builds warnings are errors, static analysis

Continuous integration every change, Linux, macOS and Windows

AI writes the code, so it is checked more, not less.

3.10crysta

How the code is checked

Tests at every level unit, integration, system

Independent references FullProf, CrysFML, CrysPy

Strict builds warnings are errors, static analysis

Continuous integration every change, Linux, macOS and Windows

AI writes the code, so it is checked more, not less.

3.11crysta

Credits

Literature

International Tables A and C · Cromer & Mann · Waasmaier & Kirfel · Busing & Levy · Caglioti · Thompson, Cox & Hastings · Finger, Cox & Jephcoat · Von Dreele · Ikeda & Carpenter · Becker & Coppens · Dollase · Rietveld · Marquardt · Proffen & Billinge · Egami & Billinge · Blume · Bertaut · Wills · Sears · Lovesey · Shmueli · Prince · Larson & Von Dreele · …

Open-source software

CrysPy: Iurii Kibalin (ESS), Arsen Gukasov (ILL), Andrew Sazonov (ESS) · CrysFML: Juan Rodríguez‑Carvajal (ILL), Javier González‑Platas (ULL), Nebil Ayape Katcho (ILL) · cctbx: R. Grosse‑Kunstleve, P. Adams, N. Sauter et al. (LBNL) · GSAS-II: B. Toby, R. Von Dreele (ANL) · PDFfit2: C. Farrow, P. Juhás, T. Proffen, S. Billinge et al. · …

Decades of work by many people, most of it long before AI.

3.11crysta

Credits

Literature

International Tables A and C · Cromer & Mann · Waasmaier & Kirfel · Busing & Levy · Caglioti · Thompson, Cox & Hastings · Finger, Cox & Jephcoat · Von Dreele · Ikeda & Carpenter · Becker & Coppens · Dollase · Rietveld · Marquardt · Proffen & Billinge · Egami & Billinge · Blume · Bertaut · Wills · Sears · Lovesey · Shmueli · Prince · Larson & Von Dreele · …

Open-source software

CrysPy: Iurii Kibalin (ESS), Arsen Gukasov (ILL), Andrew Sazonov (ESS) · CrysFML: Juan Rodríguez‑Carvajal (ILL), Javier González‑Platas (ULL), Nebil Ayape Katcho (ILL) · cctbx: R. Grosse‑Kunstleve, P. Adams, N. Sauter et al. (LBNL) · GSAS-II: B. Toby, R. Von Dreele (ANL) · PDFfit2: C. Farrow, P. Juhás, T. Proffen, S. Billinge et al. · …

Decades of work by many people, most of it long before AI.

3.11crysta

Credits

Literature

International Tables A and C · Cromer & Mann · Waasmaier & Kirfel · Busing & Levy · Caglioti · Thompson, Cox & Hastings · Finger, Cox & Jephcoat · Von Dreele · Ikeda & Carpenter · Becker & Coppens · Dollase · Rietveld · Marquardt · Proffen & Billinge · Egami & Billinge · Blume · Bertaut · Wills · Sears · Lovesey · Shmueli · Prince · Larson & Von Dreele · …

Open-source software

CrysPy: Iurii Kibalin (ESS), Arsen Gukasov (ILL), Andrew Sazonov (ESS) · CrysFML: Juan Rodríguez‑Carvajal (ILL), Javier González‑Platas (ULL), Nebil Ayape Katcho (ILL) · cctbx: R. Grosse‑Kunstleve, P. Adams, N. Sauter et al. (LBNL) · GSAS-II: B. Toby, R. Von Dreele (ANL) · PDFfit2: C. Farrow, P. Juhás, T. Proffen, S. Billinge et al. · …

Decades of work by many people, most of it long before AI.

3.11crysta

Credits

Literature

International Tables A and C · Cromer & Mann · Waasmaier & Kirfel · Busing & Levy · Caglioti · Thompson, Cox & Hastings · Finger, Cox & Jephcoat · Von Dreele · Ikeda & Carpenter · Becker & Coppens · Dollase · Rietveld · Marquardt · Proffen & Billinge · Egami & Billinge · Blume · Bertaut · Wills · Sears · Lovesey · Shmueli · Prince · Larson & Von Dreele · …

Open-source software

CrysPy: Iurii Kibalin (ESS), Arsen Gukasov (ILL), Andrew Sazonov (ESS) · CrysFML: Juan Rodríguez‑Carvajal (ILL), Javier González‑Platas (ULL), Nebil Ayape Katcho (ILL) · cctbx: R. Grosse‑Kunstleve, P. Adams, N. Sauter et al. (LBNL) · GSAS-II: B. Toby, R. Von Dreele (ANL) · PDFfit2: C. Farrow, P. Juhás, T. Proffen, S. Billinge et al. · …

Decades of work by many people, most of it long before AI.

  • 1Why new software
  • 2EasyDiffraction
  • 3crysta
  • 4Status and plans

4.1Status and plans

How much is done

EasyDiffractioncrysta
Structure model
Peak profiles
Instrument & corrections
Background, cutoff, texture
Le Bail, pair distribution
Magnetic structures
Polarised neutrons
Single crystal
Calculation modes, multi-dataset
Minimisers & sampling
Fit strategies & constraints

crysta after eight weeks: how far can it go?

4.1Status and plans

How much is done

EasyDiffractioncrysta
Structure model
Peak profiles
Instrument & corrections
Background, cutoff, texture
Le Bail, pair distribution
Magnetic structures
Polarised neutrons
Single crystal
Calculation modes, multi-dataset
Minimisers & sampling
Fit strategies & constraints

crysta after eight weeks: how far can it go?

4.1Status and plans

How much is done

EasyDiffractioncrysta
Structure model
Peak profiles
Instrument & corrections
Background, cutoff, texture
Le Bail, pair distribution
Magnetic structures
Polarised neutrons
Single crystal
Calculation modes, multi-dataset
Minimisers & sampling
Fit strategies & constraints

crysta after eight weeks: how far can it go?

4.1Status and plans

How much is done

EasyDiffractioncrysta
Structure model
Peak profiles
Instrument & corrections
Background, cutoff, texture
Le Bail, pair distribution
Magnetic structures
Polarised neutrons
Single crystal
Calculation modes, multi-dataset
Minimisers & sampling
Fit strategies & constraints

crysta after eight weeks: how far can it go?

4.2Status and plans

Next steps

Magnetic structures from CrysPy and CrysFML, the biggest gap

Polarised neutrons from CrysPy

Library features in the application the library is two years ahead

Fixes and extensions bugs, usability, small features

Bringing existing features to users.

4.2Status and plans

Next steps

Magnetic structures from CrysPy and CrysFML, the biggest gap

Polarised neutrons from CrysPy

Library features in the application the library is two years ahead

Fixes and extensions bugs, usability, small features

Bringing existing features to users.

4.2Status and plans

Next steps

Magnetic structures from CrysPy and CrysFML, the biggest gap

Polarised neutrons from CrysPy

Library features in the application the library is two years ahead

Fixes and extensions bugs, usability, small features

Bringing existing features to users.

4.2Status and plans

Next steps

Magnetic structures from CrysPy and CrysFML, the biggest gap

Polarised neutrons from CrysPy

Library features in the application the library is two years ahead

Fixes and extensions bugs, usability, small features

Bringing existing features to users.

4.2Status and plans

Next steps

Magnetic structures from CrysPy and CrysFML, the biggest gap

Polarised neutrons from CrysPy

Library features in the application the library is two years ahead

Fixes and extensions bugs, usability, small features

Bringing existing features to users.

4.2Status and plans

Next steps

Magnetic structures from CrysPy and CrysFML, the biggest gap

Polarised neutrons from CrysPy

Library features in the application the library is two years ahead

Fixes and extensions bugs, usability, small features

Bringing existing features to users.

4.3Status and plans

Project page · easydiffraction.org

the easydiffraction.org home page

4.3Status and plans

Project page · easydiffraction.org

the easydiffraction.org home page

4.3Status and plans

Project page · easydiffraction.org

the easydiffraction.org home page

4.3Status and plans

Project page · easydiffraction.org

the easydiffraction.org home page

4.3Status and plans

Project page · easydiffraction.org

the easydiffraction.org home page