diffpy.cmi documentation

Software version 0.1.0rc1
Last updated August 28, 2025.

diffpy.cmi - Complex modeling infrastructure: a modular framework for multi-modal modeling of scientific data.

diffpy.cmi is designed as an extensible complex modeling infrastructure. Users and developers can readily integrate novel data types and constraints into custom workflows. While widely used for advanced analysis of structural data, the framework is general and can be applied to any problem where model parameters are refined to fit calculated quantities to data.

diffpy.cmi is a community-driven project that supports Unix, Linux, macOS, and Windows platforms. It is designed to be used in Python scripts enabling flexible scripting and automation for advanced and reproducible workflows. Users are encouraged to leverage the software for their modeling needs and to contribute feedback, use cases, and extensions through the project community.

codecov-in-pr-comment

Community Use and Extensible Modeling

One of the key strengths of diffpy.cmi is its modular design, which allows the integration and fitting of any data type, not just PDFs. While its current core functionality is in PDF modeling and multi-dataset fitting, we actively encourage and support community-developed modules and workflows for any data types you see fit!

codecov-in-pr-comment

Have you built a new workflow you’d like to implement into diffpy.cmi? We would love to highlight your extension or application!

  1. Share your work: Please open an issue or a pull request to share your work and help us expand the platform.

  2. Be recognized: Community contributions and new use cases will be showcased and credited here.

Getting started

To get started, please visit the Getting started page.

Authors

diffpy.cmi is developed by Simon Billinge and members of the Billinge Group. The maintainer for this project is Simon Billinge. For a detailed list of contributors see https://github.com/diffpy/diffpy.cmi/graphs/contributors.

Installation

See the README file included with the distribution.

Acknowledgements

diffpy.cmi is built and maintained with scikit-package.

Citation

If you use diffpy.cmi in a scientific publication, we would like you to cite this package as

Juhás, P.; Farrow, C. L.; Yang, X.; Knox, K. R.; Billinge, S. J. L. Complex Modeling: A Strategy and Software Program for Combining Multiple Information Sources to Solve Ill Posed Structure and Nanostructure Inverse Problems. Acta Crystallogr A Found Adv 2015, 71 (6), 562–568. https://doi.org/10.1107/S2053273315014473

Table of contents

Indices