CyRSoXS: GPU enabled RSoXS simulation
-
CyRSoXS is a GPU-accelerated codebase that calculates resonant X-ray scattering in the Born Approximation. It takes a voxel-based model and optical constants as input, and returns simulated X-ray scattering patterns. These models can be derived from real space measurements (AFM, TEM, 4DSTEM), or synthetically generated using procedural morphology generators. Currently, it supports both 32 bit and 64 bit float data types.
-
The code can be executed through Python (enabled through Pybind11) or directly through the executable.
Version : 1.2.0.0
The developer version of the CyRSoXS code is available at https://bitbucket.org/baskargroup/cy-rsoxs. All stable future releases will be merged with the current usnistgov repository.
Dependencies
Hardware
- CUDA GPU with Compute Capability >=7
- CUDA is a parallel computing platform and programming model creaded by NVIDIA
Required Dependencies for building from source
- A C++ compiler with C++17 support is required.
- gcc compatible with your CUDA toolkit
- CUDA Toolkit with nvcc
- HDF5 (optional at the system level for Python/uv builds: CMake can compile a bundled static HDF5 when
CYRSOXS_FETCH_HDF5is enabled, which is the default forSKBUILDinstalls)- Hierarchical Data Format (version 5) is a set of file formats designed to store and organize large amounts of data. CyRSoXS uses it to store models and simulated scattering patterns
- OpenMP
- libconfig==1.7.2
Additional dependencies for building with Pybind
- Python >= 3.10 (for the Pybind11 extension build via uv or pip)
Optional Dependencies
- Doxygen - for building the documentation.
- Docker - if you want to run CyRSoXS in a Docker container.
Installation
- conda-forge (recommended pre-built GPU binaries):
conda install cyrsoxs -c conda-forge - uv / pip from source: this repository ships a
pyproject.tomlusing scikit-build-core. With CUDA and OpenMP on the system, runuv sync --all-groups(oruv sync --all-extras) oruv build. HDF5 is built automatically when not installed system-wide (CYRSOXS_FETCH_HDF5, on by default for Python builds). Tag-triggered PyPI uploads currently publish sdists only (binary manylinux CUDA wheels would need a dedicated cibuildwheel image policy); conda-forge remains the primary channel for curated GPU stacks. - CMake-only flows for the CLI, libconfig, and detailed HDF5 setup are in docs/INSTALL.md.
Publishing to PyPI on annotated tags is handled by .github/workflows/release.yml using trusted publishing; configure the cyrsoxs project on PyPI to trust this GitHub repository and workflow before relying on automated uploads.
Simulation Componenets
Running CyRSoXS
Visualization
Known Issues
Documentation
CyRSoXS documentation is available at https://cyrsoxs.readthedocs.io, and instructions to build the documentation are in the Installation Instructions.
Running CyRSoXS with Docker
The Docker image for CyRSoXS is available at Docker Hub. This comes installed with Nvidia toolkit and other dependencies. See docs/DOCKER.md for detailed instructions on how to build CyRSoXS with the Docker image.
Contributors
This software was developed at Iowa State University in collaboration with NIST. The Iowa State team provided expertise in high performance computing, and the NIST team provided scientific expertise on the RSoXS technique.
Iowa State University
- Kumar Saurabh, Github, ORCiD, Email
- Adarsh Krishnamurthy, Webpage, ORCiD, Email
- Baskar Ganapathysubramanian, Webpage, ORCiD, Email
NIST
- Eliot Gann, Github, ORCiD, Email
- Dean M. DeLongchamp, Webpage, ORCiD, Email
- Peter J. Dudenas, Github, ORCiD, Email
- Tyler B. Martin, Github, ORCiD, Email
- Peter Beaucage, Github, ORCiD, Email
Acknowledgement
We thank the Office of Naval Research Multidisciplinary University Research Initiative (ONR MURI) Center for Self-Assembled Organic Electronics for providing support for this work.
Frequently Asked Questions
See docs/FAQ.md for some of the known issues or Frequently asked questions.
Contact
Questions and comments should be sent to Dr. Baskar Ganapathysubramanian at baskarg@iastate.edu, Dr. Adarsh Krishnamurthy adarsh@iastate.edu, or Dr. Dean DeLongchamp at dean.delongchamp@nist.gov
NIST Disclaimer
Any mention of commercial products is for information only; it does not imply recommendation or endorsement by NIST.
Metadata
Release files for cyrsoxs-temp 1.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| cyrsoxs_temp-1.2.0.tar.gz | 2.9 MB | With provenance | Details for cyrsoxs_temp-1.2.0.tar.gz |
Release files / cyrsoxs_temp-1.2.0.tar.gz
| Download URL | cyrsoxs_temp-1.2.0.tar.gz |
|---|---|
| Size | 2.9 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
022886ae3b327072ccd6d92a6b400032220e6aa450f2f1b5513245e9be63c13e
|
|
BLAKE2b-256 checksum How to use checksums |
29bc3cc2ccc526689a0017091ce891b348978e0f6b224b81799d3c644ac9ad93
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.12
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency logSecurity for cyrsoxs-temp 1.2.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 1 file in this release has been uploaded with provenance metadata.
Attestation for cyrsoxs_temp-1.2.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 14, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.