diffpy.cmi documentation

Software version 3.1.2
Last updated December 20, 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 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

The power of diffpy.cmi

diffpy.cmi is designed to be a generalized regression engine for any data type, enabling researchers to fit, analyze, and combine multiple sources of information in a unified framework.

diffpy.cmi can be used to fit ANY type of data!

One of the key strengths of diffpy.cmi is its modular design, which allows the integration and fitting of any data type. While its most commonly used functionality is in pair distribution function (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

To make diffpy.cmi easy to use, we organize functionality into Packs and Profiles, allowing users to contribute their own modules and workflows seamlessly. Please see the overview for more information on these concepts and how you can contribute your own extensions to the community!

Getting started

To get started, please visit the Getting started section.

codecov-in-pr-comment

For detailed instructions and in-depth examples of modeling Pair Distribution Function data with diffpy.cmi, we highly recommend the book,

Atomic Pair Distribution Function Analysis: A Primer by Simon J. L. Billinge and Kirsten M. Ø. Jensen (Oxford University Press, 2023).

To purchase this book, please visit this link.

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 Installation page or 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

WHAT IS DIFFPY.CMI?

AVAILABLE PACKS & PROFILES

EXAMPLES & MORE

Indices