Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
2426eb3
AUTHORS.rst
cadenmyers13 Feb 25, 2026
380a0c1
CODE-OF-CONDUCT.rst
cadenmyers13 Feb 25, 2026
441f669
cookiecutter.json
cadenmyers13 Feb 25, 2026
cd8f96e
LICENSE.rst
cadenmyers13 Feb 25, 2026
4cebd7b
LICENSE.rst pt2
cadenmyers13 Feb 25, 2026
5da77d6
MANIFEST.in
cadenmyers13 Feb 25, 2026
00f5fba
pyproject.toml
cadenmyers13 Feb 25, 2026
6bcccf3
README.rst
cadenmyers13 Feb 25, 2026
11167cb
release_checklist.md
cadenmyers13 Feb 25, 2026
7104cf1
build-and-publish-docs-on-dispatch.yml
cadenmyers13 Feb 25, 2026
6510ca4
build-wheel-release-upload.yml
cadenmyers13 Feb 25, 2026
b506e16
matrix-and-codecov.yml
cadenmyers13 Feb 25, 2026
cd28445
README.rst pt2
cadenmyers13 Feb 25, 2026
f71e1da
conf.py
cadenmyers13 Feb 25, 2026
c079ece
index.rst
cadenmyers13 Feb 25, 2026
1479077
license.rst
cadenmyers13 Feb 25, 2026
1ef6b74
diffpy.srfit.rst
cadenmyers13 Feb 25, 2026
99c7aac
__init__.py
cadenmyers13 Feb 25, 2026
8d4945a
__init__.py
cadenmyers13 Feb 25, 2026
935f5e5
__init__.py
cadenmyers13 Feb 25, 2026
21f688b
srfit_app.py
cadenmyers13 Feb 25, 2026
af72c5c
version.py
cadenmyers13 Feb 25, 2026
8729487
news
cadenmyers13 Feb 25, 2026
36216d8
[pre-commit.ci] auto fixes from pre-commit hooks
pre-commit-ci[bot] Feb 25, 2026
e463996
rm merge-to-main duplicate workflow
cadenmyers13 Feb 25, 2026
a833433
add __init__ header to README
cadenmyers13 Feb 25, 2026
dd9fca8
pull PR to list branch to fix docformatter failure
cadenmyers13 Feb 25, 2026
f270af1
Merge branch 'v3.3.0' into update030
cadenmyers13 Feb 25, 2026
cee67de
[pre-commit.ci] auto fixes from pre-commit hooks
pre-commit-ci[bot] Feb 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions .github/ISSUE_TEMPLATE/release_checklist.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,12 +11,13 @@ assignees: ""
- [ ] All PRs/issues attached to the release are merged.
- [ ] All the badges on the README are passing.
- [ ] License information is verified as correct. If you are unsure, please comment below.
- [ ] Locally rendered documentation contains all appropriate pages, including API references (check no modules are
missing), tutorials, and other human-written text is up-to-date with any changes in the code.
- [ ] Locally rendered documentation contains all appropriate pages, tutorials, and other human-written text is up-to-date with any changes in the code.
- [ ] All API references are included. To check this, run `conda install scikit-package` and then `package build api-doc`. Review any edits made by rerendering the docs locally.
- [ ] Installation instructions in the README, documentation, and the website are updated.
- [ ] Successfully run any tutorial examples or do functional testing with the latest Python version.
- [ ] Grammar and writing quality are checked (no typos).
- [ ] Install `pip install build twine`, run `python -m build` and `twine check dist/*` to ensure that the package can be built and is correctly formatted for PyPI release.
- [ ] Dispatch matrix testing to test the release on all Python versions and systems. If you do not have permission to run this workflow, tag the maintainer and say `@maintainer, please dispatch matrix testing workflow`.

Please tag the maintainer (e.g., @username) in the comment here when you are ready for the PyPI/GitHub release. Include any additional comments necessary, such as version information and details about the pre-release here:

Expand All @@ -34,7 +35,7 @@ Please let the maintainer know that all checks are done and the package is ready
<!-- After the maintainer releases the PyPI package, please check the following when creating a PR for conda-forge release.-->

- [ ] Ensure that the full release has appeared on PyPI successfully.
- [ ] New package dependencies listed in `conda.txt` and `test.txt` are added to `meta.yaml` in the feedstock.
- [ ] New package dependencies listed in `conda.txt` and `tests.txt` are added to `meta.yaml` in the feedstock.
- [ ] Close any open issues on the feedstock. Reach out to the maintainer if you have questions.
- [ ] Tag the maintainer for conda-forge release.

Expand Down
18 changes: 18 additions & 0 deletions .github/workflows/build-and-publish-docs-on-dispatch.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
name: Build and Publish Docs on Dispatch

on:
workflow_dispatch:

jobs:
get-python-version:
uses: scikit-package/release-scripts/.github/workflows/_get-python-version-latest.yml@v0
with:
python_version: 0

docs:
uses: scikit-package/release-scripts/.github/workflows/_release-docs.yml@v0
with:
project: diffpy.srfit
c_extension: false
headless: false
python_version: ${{ fromJSON(needs.get-python-version.outputs.latest_python_version) }}
6 changes: 3 additions & 3 deletions .github/workflows/build-wheel-release-upload.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Release (GitHub/PyPI) and Deploy Docs
name: Build Wheel, Release on GitHub/PyPI, and Deploy Docs

on:
workflow_dispatch:
Expand All @@ -7,12 +7,12 @@ on:
- "*" # Trigger on all tags initially, but tag and release privilege are verified in _build-wheel-release-upload.yml

jobs:
release:
build-release:
uses: scikit-package/release-scripts/.github/workflows/_build-wheel-release-upload.yml@v0
with:
project: diffpy.srfit
c_extension: false
maintainer_GITHUB_username: sbillinge
maintainer_GITHUB_username: cadenmyers13, sbillinge
secrets:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
name: CI
name: Matrix and Codecov

on:
# push:
# branches:
# - main
release:
types:
- prereleased
Expand Down
2 changes: 1 addition & 1 deletion AUTHORS.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Authors
=======

Christopher Farrow, Pavol Juhas, Simon J. L. Billinge, and members of the Billinge Group
Christopher Farrow, Pavol Juhas, Caden Myers, Simon J. L. Billinge, and members of the Billinge Group

Contributors
------------
Expand Down
2 changes: 1 addition & 1 deletion CODE-OF-CONDUCT.rst
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
sb2896@columbia.edu. All complaints will be reviewed and investigated promptly and fairly.
cjm2304@columbia.edu and sbillinge@ucsb.edu. All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
Expand Down
2 changes: 1 addition & 1 deletion LICENSE.rst
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ OPEN SOURCE LICENSE AGREEMENT
- Copyright (c) 2008-2012, The Trustees of Columbia University in the City of New York
- Copyright (c) 2014-2019, Brookhaven Science Associates, Brookhaven National Laboratory
- Copyright (c) 2020-2025, The Trustees of Columbia University in the City of New York

- Copyright (c) 2026-present, The DiffPy Team.

The "DiffPy-CMI" is distributed subject to the following license conditions:

Expand Down
1 change: 0 additions & 1 deletion MANIFEST.in
Original file line number Diff line number Diff line change
Expand Up @@ -11,4 +11,3 @@ global-exclude __pycache__ # Exclude Python cache directories.
global-exclude .git* # Exclude git files and directories.
global-exclude .idea # Exclude PyCharm project settings.
exclude .codecov.yml
exclude .coveragerc
41 changes: 34 additions & 7 deletions README.rst
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@
:target: https://anaconda.org/conda-forge/diffpy.srfit

.. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff
:target: https://github.com/diffpy/diffpy.srfit/pulls

.. |PyPI| image:: https://img.shields.io/pypi/v/diffpy.srfit
:target: https://pypi.org/project/diffpy.srfit/
Expand All @@ -38,7 +39,7 @@
diffpy.srfit
============

Configurable code for solving atomic structures.
Generalized code base for modeling problems.

The diffpy.srfit package provides the framework for building a global optimizer
on the fly from components such as function calculators (that calculate
Expand All @@ -62,6 +63,23 @@ obtain the total cost function. Additionally, diffpy.srfit is designed to be
extensible, allowing the user to integrate external calculators to perform
co-refinements with other techniques.


SrFit has tools for coherently combining known information about a
material to derive other properties, in particular material structure.
SrFit allows the customization and creation of structure
representations, profile calculators, constraints, restraints and file
input parsers. The customized pieces can be glued together within SrFit
to optimize a structure, or other physically relevant information from
one or more experimental profiles. Other known information about the
system of interest can be included with arbitrarily complex constraints
and restraints. In this way, the end user creates a customized fitting
application that suits the problem to the available information.

The subpackages herein define various pieces of the SrFit framework.
Developers are encouraged to work through the examples described in the
documentation to learn how to use and customize the various parts of
SrFit.

For more information about the diffpy.srfit library, please consult our `online documentation <https://diffpy.github.io/diffpy.srfit>`_.

Citation
Expand Down Expand Up @@ -94,10 +112,6 @@ The following creates and activates a new environment named ``diffpy.srfit_env``
conda create -n diffpy.srfit_env diffpy.srfit
conda activate diffpy.srfit_env

To confirm that the installation was successful, type ::

python -c "import diffpy.srfit; print(diffpy.srfit.__version__)"

The output should print the latest version displayed on the badges above.

This will install the minimal `diffpy.srfit` installation. It will often be used
Expand Down Expand Up @@ -136,6 +150,19 @@ and run the following ::

pip install .

This package also provides command-line utilities. To check the software has been installed correctly, type ::

diffpy.srfit --version

You can also type the following command to verify the installation. ::

python -c "import diffpy.srfit; print(diffpy.srfit.__version__)"


To view the basic usage and available commands, type ::

diffpy.srfit -h

Getting Started
---------------

Expand Down Expand Up @@ -167,12 +194,12 @@ trying to commit again.

Improvements and fixes are always appreciated.

Before contributing, please read our `Code of Conduct <https://github.com/diffpy/diffpy.srfit/blob/main/CODE_OF_CONDUCT.rst>`_.
Before contributing, please read our `Code of Conduct <https://github.com/diffpy/diffpy.srfit/blob/main/CODE-OF-CONDUCT.rst>`_.

Contact
-------

For more information on diffpy.srfit please visit the project `web-page <https://diffpy.github.io/>`_ or email Simon Billinge at sb2896@columbia.edu.
For more information on diffpy.srfit please visit the project `web-page <https://diffpy.github.io/>`_ or email the maintainers ``Caden Myers (cjm2304@columbia.edu) and Simon J. L. Billinge (sbillinge@ucsb.edu)``.

Acknowledgements
----------------
Expand Down
20 changes: 20 additions & 0 deletions cookiecutter.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
{
"author_names": "Christopher Farrow, Pavol Juhas, Caden Myers, Simon J. L. Billinge",
"author_emails": "farrowch@gmail.com, pavol.juhas@gmail.com, cjm2304@columbia.edu, sbillinge@ucsb.edu",
"maintainer_names": "Caden Myers, Simon J. L. Billinge",
"maintainer_emails": "cjm2304@columbia.edu, sbillinge@ucsb.edu",
"maintainer_github_usernames": "cadenmyers13, sbillinge",
"contributors": "Christopher Farrow, Pavol Juhas, Caden Myers, Simon J. L. Billinge, and members of the DiffPy community.",
"license_holders": "The DiffPy Team",
"project_name": "diffpy.srfit",
"github_username_or_orgname": "diffpy",
"github_repo_name": "diffpy.srfit",
"conda_pypi_package_dist_name": "diffpy.srfit",
"package_dir_name": "diffpy.srfit",
"project_short_description": "Generalized code base for modeling problems.",
"project_keywords": "regression, modeling, fitting, diffraction, PDF",
"minimum_supported_python_version": "3.11",
"maximum_supported_python_version": "3.13",
"project_needs_c_code_compiled": "No",
"project_has_gui_tests": "No"
}
6 changes: 4 additions & 2 deletions docs/examples/debyemodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
# See LICENSE_DANSE.txt for license information.
#
########################################################################
"""Example of fitting the Debye model to experimental Debye-Waller factors.
"""Example of fitting the Debye model to experimental Debye-Waller
factors.

In this example, we build a fit recipe that uses an external function that can
simulate a atomic displacement parameters using the Debye model. This serves as
Expand Down Expand Up @@ -207,7 +208,8 @@ def main():


def debye(T, m, thetaD):
"""A wrapped version of 'adps' that can handle an array of T-values."""
"""A wrapped version of 'adps' that can handle an array of
T-values."""
y = numpy.array([adps(m, thetaD, x) for x in T])
return y

Expand Down
3 changes: 2 additions & 1 deletion docs/examples/debyemodelII.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
# See LICENSE_DANSE.txt for license information.
#
########################################################################
"""Example of fitting the Debye recipe to experimental Debye-Waller factors.
"""Example of fitting the Debye recipe to experimental Debye-Waller
factors.

This is an extension of example in debyemodel.py. The recipe we create will
simultaneously fit the low and high temperature parts of the experimental data
Expand Down
3 changes: 2 additions & 1 deletion docs/examples/npintensityII.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,8 @@
# See LICENSE_DANSE.txt for license information.
#
########################################################################
"""Example of extracting information from multiple data sets simultaneously.
"""Example of extracting information from multiple data sets
simultaneously.

This example builds on npintensitygenerator.py, and uses IntensityGenerator
from that example to build a recipe that simultaneously refines two data sets
Expand Down
3 changes: 2 additions & 1 deletion docs/examples/nppdfsas.py
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,8 @@


def makeRecipe(ciffile, grdata, iqdata):
"""Make complex-modeling recipe where I(q) and G(r) are fit simultaneously.
"""Make complex-modeling recipe where I(q) and G(r) are fit
simultaneously.

The fit I(q) is fed into the calculation of G(r), which provides
feedback for the fit parameters of both.
Expand Down
3 changes: 2 additions & 1 deletion docs/examples/threedoublepeaks.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@


def makeRecipe():
"""Make a FitRecipe for fitting three double-gaussian curves to data.
"""Make a FitRecipe for fitting three double-gaussian curves to
data.

The separation and amplitude ratio of the double peaks follows a
specific relationship. The peaks are broadend according to their
Expand Down
12 changes: 8 additions & 4 deletions docs/source/api/diffpy.srfit.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
:tocdepth: -1

diffpy.srfit package
====================
|title|
=======

.. |title| replace:: diffpy.srfit package

.. automodule:: diffpy.srfit
:members:
Expand All @@ -25,8 +27,10 @@ Subpackages
Submodules
----------

diffpy.srfit.exceptions module
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|module|
--------

.. |module| replace:: diffpy.srfit.exceptions module

.. automodule:: diffpy.srfit.exceptions
:members:
Expand Down
8 changes: 3 additions & 5 deletions docs/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,7 @@
sys.path.insert(0, str(Path("../../src").resolve()))

# abbreviations
ab_authors = (
"Christopher Farrow, Pavol Juhas, and members of the Billinge Group"
)
ab_authors = "Christopher Farrow, Pavol Juhas, Caden Myers, Simon J. L. Billinge, and members of the Billinge Group."

# -- General configuration ------------------------------------------------

Expand Down Expand Up @@ -86,7 +84,7 @@

# General information about the project.
project = "diffpy.srfit"
copyright = "%Y, The Trustees of Columbia University in the City of New York"
copyright = "%Y, The DiffPy Team"

# The version info for the project you're documenting, acts as replacement for
# |version| and |release|, also used in various other places throughout the
Expand Down Expand Up @@ -317,7 +315,7 @@
"diffpy.srfit Documentation",
ab_authors,
"diffpy.srfit",
"Configurable code for solving atomic structures.",
"Generalized code base for modeling problems.",
"Miscellaneous",
),
]
Expand Down
Loading
Loading