Skip to main content

Pysimxrd

Physical simulation of powder X-ray diffraction patterns.

Pysimxrd provides high-level utilities for generating simulated powder XRD profiles from crystal structures stored in ASE database files. It includes a pymatgen-backed simulation path and a WPEM path for diffraction conditions, systematic extinction, multiplicity, structure factors, peak broadening, background, and noise.

Bin Cao, PhD of HKUST(Guangzhou), https://bin-cao.github.io
URL: https://github.com/Bin-Cao/SimXRD

Features

  • Simulate powder XRD patterns from ASE database entries.
  • Support 2-theta output and d-spacing output.
  • Include peak broadening from crystallite size and instrumental effects.
  • Add preferred-orientation variation, thermal vibration, background, and noise.
  • Provide a WPEM path with symmetry-based extinction and multiplicity handling.
  • Support optional random lattice deformation for data augmentation.

Installation

Install from PyPI:

pip install Pysimxrd

Install from the project root:

pip install .

For editable development:

pip install -e .

Quick Start

from ase.db import connect
from Pysimxrd import generator

database = connect("sim/demo_mp.db")
x, y = generator.parser(database, entry_id=1)

print(len(x), len(y))
print(x[:5], y[:5])

Use the WPEM simulation path:

from ase.db import connect
from Pysimxrd import generator

database = connect("sim/demo_mp.db")
x, y = generator.parser(database, entry_id=1, sim_model="WPEM")

Use d-spacing output instead of 2-theta:

x_d, intensity = generator.parser(
    database,
    entry_id=1,
    sim_model="WPEM",
    xrd="real",
)

Main API

Pysimxrd.generator.parser

parser(
    database,
    entry_id,
    grainsize=20,
    prefect_orientation=[0.1, 0.1],
    thermo_vibration=0.1,
    zero_shift=0.1,
    dis_detector2sample=500,
    half_height_slit_detector=5,
    half_height_sample=2.5,
    deformation=False,
    sim_model=None,
    xrd="reciprocal",
    background_order=6,
    background_ratio=0.05,
    mixture_noise_ratio=0.02,
    lattice_extinction_ratio=0.01,
    lattice_torsion_ratio=0.01,
    verbose=False,
)

Important arguments:

  • database: an open ASE database connection.
  • entry_id: row id in the ASE database.
  • sim_model: set to "WPEM" for the WPEM simulation path; use None for the pymatgen-backed default path.
  • xrd: "reciprocal" returns 2-theta; "real" returns d-spacing.
  • deformation: applies random lattice deformation for peak-position augmentation.
  • lattice_extinction_ratio: random stretching/compression ratio used when deformation=True.
  • lattice_torsion_ratio: random shear ratio used when deformation=True.
  • verbose: prints package and run metadata before simulation.

Returns:

x, y

where x is the simulated x-axis and y is the normalized intensity profile.

WPEM Deformation Behavior

For sim_model="WPEM" with deformation=True, symmetry information is taken from the undeformed conventional cell:

  • space group
  • centering symbol
  • crystal system
  • atom coordinates

The deformed lattice constants are then used for peak position and d-spacing calculation. This keeps the symmetry/extinction logic tied to the original crystal while allowing peak shifts from lattice perturbation.

Package Layout

src/Pysimxrd/
  __init__.py
  generator.py
  CGCNN_atom_emb.json
  utils/
    MatgenKit.py
    WPEMsim.py
    funs.py

Development Checks

Run a simple import and smoke test from the repository root:

python -c "from ase.db import connect; from Pysimxrd import generator; db=connect('sim/demo_mp.db'); x,y=generator.parser(db,1); print(len(x), len(y))"

Build a source distribution and wheel:

python setup.py sdist bdist_wheel

Citation

If this package or the associated SimXRD dataset is useful in your work, please cite the related project and repository:

SimXRD / Pysimxrd
Cao Bin
https://github.com/Bin-Cao/SimXRD

License

This project is released under the MIT License. See LICENSE for details.

Metadata

Release files for Pysimxrd 1.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for Pysimxrd 1.0.0
File Size Uploaded
pysimxrd-1.0.0.tar.gz 33.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for Pysimxrd 1.0.0
File Interpreter ABI Platform
pysimxrd-1.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 66.4 kB

Release files / pysimxrd-1.0.0.tar.gz

Download URL pysimxrd-1.0.0.tar.gz
Size 33.1 kB
Tags Source
SHA-256 checksum
How to use checksums
91579ac359e59ea72dbea47976c1f99c5658ee6119b7d0ce898aa24aa65d755e
BLAKE2b-256 checksum
How to use checksums
e9eaeb7ea72e631478ee2447c043e666531a026eefa777b5bf1024de124dfd47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.19

Release files / pysimxrd-1.0.0-py3-none-any.whl

Download URL pysimxrd-1.0.0-py3-none-any.whl
Size 33.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
236687f33bb250a57ee74f6bd93c0874ede2da4136045e40cd8bf9f2f43567c2
BLAKE2b-256 checksum
How to use checksums
6d84d2f55e32ccb96e060f4d848ec4ab30476ec1fab6f80ec6a067366295b55a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.9.19

Release history Release notifications | RSS feed

This release

1.0.0 This release

2 release files

0.1.2

2 release files

0.1.1

2 release files

0.1.0

2 release files

0.0.3

2 release files

0.0.2

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page