From be4a51f5d337b4f8c74d95f8e7bed4ca7dea09e8 Mon Sep 17 00:00:00 2001 From: John Halloran Date: Sat, 31 Jan 2026 15:11:00 -0500 Subject: [PATCH 1/3] chore: update to latest version of scikit-package --- .codecov.yml | 8 +- .codespell/ignore_words.txt | 3 - .flake8 | 6 +- .github/ISSUE_TEMPLATE/release_checklist.md | 33 +- .../pull_request_template.md | 15 + .../workflows/build-wheel-release-upload.yml | 8 +- .github/workflows/check-news-item.yml | 6 +- .../matrix-and-codecov-on-merge-to-main.yml | 4 +- .github/workflows/publish-docs-on-release.yml | 12 + .gitignore | 8 +- .isort.cfg | 3 +- .pre-commit-config.yaml | 38 ++- .readthedocs.yaml | 13 + AUTHORS.rst | 2 +- CHANGELOG.rst | 49 +-- CODE-OF-CONDUCT.rst | 133 ++++++++ LICENSE.rst | 3 +- README.rst | 52 +-- cookiecutter.json | 18 + docs/Makefile | 194 +++++++++++ docs/make.bat | 36 ++ docs/source/_static/.placeholder | 0 docs/source/api/diffpy.snmf.rst | 30 ++ docs/source/conf.py | 322 ++++++++++++++++++ docs/source/img/scikit-package-logo-text.png | Bin 0 -> 187608 bytes docs/source/index.rst | 56 +++ docs/source/license.rst | 38 +++ docs/source/release.rst | 5 + docs/source/snippets/example-table.rst | 28 ++ pyproject.toml | 53 +-- requirements/conda.txt | 5 - requirements/docs.txt | 1 + requirements/pip.txt | 3 - src/diffpy/__init__.py | 10 +- src/diffpy/snmf/__init__.py | 9 +- src/diffpy/snmf/snmf_app.py | 33 ++ src/diffpy/snmf/version.py | 16 +- tests/test_version.py | 7 +- 38 files changed, 1076 insertions(+), 184 deletions(-) create mode 100644 .github/PULL_REQUEST_TEMPLATE/pull_request_template.md create mode 100644 .github/workflows/publish-docs-on-release.yml create mode 100644 .readthedocs.yaml create mode 100644 CODE-OF-CONDUCT.rst create mode 100644 cookiecutter.json create mode 100644 docs/Makefile create mode 100644 docs/make.bat create mode 100644 docs/source/_static/.placeholder create mode 100644 docs/source/api/diffpy.snmf.rst create mode 100644 docs/source/conf.py create mode 100644 docs/source/img/scikit-package-logo-text.png create mode 100644 docs/source/index.rst create mode 100644 docs/source/license.rst create mode 100644 docs/source/release.rst create mode 100644 docs/source/snippets/example-table.rst create mode 100644 src/diffpy/snmf/snmf_app.py diff --git a/.codecov.yml b/.codecov.yml index 5a94096e..4af5eb24 100644 --- a/.codecov.yml +++ b/.codecov.yml @@ -1,14 +1,14 @@ coverage: status: - project: # more options at https://docs.codecov.com/docs/commit-status + project: # more options at https://docs.codecov.com/docs/commit-status default: target: auto # use the coverage from the base commit, fail if coverage is lower - threshold: 0% # allow the coverage to drop by + threshold: 0% # allow the coverage to drop by comment: layout: " diff, flags, files" behavior: default require_changes: false - require_base: false # [true :: must have a base report to post] - require_head: false # [true :: must have a head report to post] + require_base: false # [true :: must have a base report to post] + require_head: false # [true :: must have a head report to post] hide_project_coverage: false # [true :: only show coverage on the git diff aka patch coverage] diff --git a/.codespell/ignore_words.txt b/.codespell/ignore_words.txt index 9757d7c0..04b4fcfa 100644 --- a/.codespell/ignore_words.txt +++ b/.codespell/ignore_words.txt @@ -4,8 +4,5 @@ ;; abbreviation for "materials" often used in a journal title mater -;; alternative use of socioeconomic -socio-economic - ;; Frobenius norm used in np.linalg.norm fro diff --git a/.flake8 b/.flake8 index 2d2cb168..88077af0 100644 --- a/.flake8 +++ b/.flake8 @@ -1,11 +1,13 @@ +# As of now, flake8 does not natively support configuration via pyproject.toml +# https://github.com/microsoft/vscode-flake8/issues/135 [flake8] exclude = .git, __pycache__, build, dist, - doc/source/conf.py -max-line-length = 115 + docs/source/conf.py +max-line-length = 79 # Ignore some style 'errors' produced while formatting by 'black' # https://black.readthedocs.io/en/stable/guides/using_black_with_other_tools.html#labels-why-pycodestyle-warnings extend-ignore = E203 diff --git a/.github/ISSUE_TEMPLATE/release_checklist.md b/.github/ISSUE_TEMPLATE/release_checklist.md index 0f560278..56bcd015 100644 --- a/.github/ISSUE_TEMPLATE/release_checklist.md +++ b/.github/ISSUE_TEMPLATE/release_checklist.md @@ -6,30 +6,41 @@ labels: "release" assignees: "" --- -### PyPI/GitHub release checklist: +### PyPI/GitHub rc-release preparation checklist: - [ ] 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. -- [ ] Installation instructions in the README, documentation and on the website (e.g., diffpy.org) are updated. + missing), tutorials, and other human-written text is up-to-date with any changes in the code. +- [ ] 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. -Please mention @sbillinge here when you are ready for PyPI/GitHub release. Include any additional comments necessary, such as -version information and details about the pre-release here: +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: -### conda-forge release checklist: +### PyPI/GitHub full-release preparation checklist: - +- [ ] Create a new conda environment and install the rc from PyPI (`pip install ==??`) +- [ ] License information on PyPI is correct. +- [ ] Docs are deployed successfully to `https:///`. +- [ ] Successfully run all tests, tutorial examples or do functional testing. -- [ ] New package dependencies listed in `conda.txt` and `test.txt` are added to `meta.yaml` in the feedstock. -- [ ] All relevant issues in the feedstock are addressed in the release PR. +Please let the maintainer know that all checks are done and the package is ready for full release. + +### conda-forge release preparation checklist: + + + +- [ ] Ensure that the full release has appeared on PyPI successfully. +- [ ] 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. ### Post-release checklist -- [ ] Run tutorial examples and conduct functional testing using the installation guide in the README. Attach screenshots/results as comments. -- [ ] Documentation (README, tutorials, API references, and websites) is deployed without broken links or missing figures. +- [ ] Run tutorial examples and conduct functional testing using the installation guide in the README. Attach screenshots/results as comments. +- [ ] Documentation (README, tutorials, API references, and websites) is deployed without broken links or missing figures. diff --git a/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md new file mode 100644 index 00000000..1099d862 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/pull_request_template.md @@ -0,0 +1,15 @@ +### What problem does this PR address? + + + +### What should the reviewer(s) do? + + + + diff --git a/.github/workflows/build-wheel-release-upload.yml b/.github/workflows/build-wheel-release-upload.yml index 0af554bc..f440716b 100644 --- a/.github/workflows/build-wheel-release-upload.yml +++ b/.github/workflows/build-wheel-release-upload.yml @@ -4,13 +4,15 @@ on: workflow_dispatch: push: tags: - - '*' # Trigger on all tags initially, but tag and release privilege are verified in _build-wheel-release-upload.yml + - "*" # Trigger on all tags initially, but tag and release privilege are verified in _build-wheel-release-upload.yml jobs: - release: - uses: Billingegroup/release-scripts/.github/workflows/_build-wheel-release-upload.yml@v0 + build-release: + uses: scikit-package/release-scripts/.github/workflows/_build-wheel-release-upload.yml@v0 with: project: diffpy.snmf + c_extension: false + maintainer_GITHUB_username: sbillinge secrets: PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }} PAT_TOKEN: ${{ secrets.PAT_TOKEN }} diff --git a/.github/workflows/check-news-item.yml b/.github/workflows/check-news-item.yml index 2f951515..1c7c14ff 100644 --- a/.github/workflows/check-news-item.yml +++ b/.github/workflows/check-news-item.yml @@ -3,10 +3,10 @@ name: Check for News on: pull_request_target: branches: - - main + - main jobs: - build: - uses: Billingegroup/release-scripts/.github/workflows/_check-news-item.yml@v0 + check-news-item: + uses: scikit-package/release-scripts/.github/workflows/_check-news-item.yml@v0 with: project: diffpy.snmf diff --git a/.github/workflows/matrix-and-codecov-on-merge-to-main.yml b/.github/workflows/matrix-and-codecov-on-merge-to-main.yml index 4f8649e8..5360214b 100644 --- a/.github/workflows/matrix-and-codecov-on-merge-to-main.yml +++ b/.github/workflows/matrix-and-codecov-on-merge-to-main.yml @@ -11,8 +11,8 @@ on: workflow_dispatch: jobs: - coverage: - uses: Billingegroup/release-scripts/.github/workflows/_matrix-and-codecov-on-merge-to-main.yml@v0 + matrix-coverage: + uses: scikit-package/release-scripts/.github/workflows/_matrix-and-codecov-on-merge-to-main.yml@v0 with: project: diffpy.snmf c_extension: false diff --git a/.github/workflows/publish-docs-on-release.yml b/.github/workflows/publish-docs-on-release.yml new file mode 100644 index 00000000..2f0efbc1 --- /dev/null +++ b/.github/workflows/publish-docs-on-release.yml @@ -0,0 +1,12 @@ +name: Deploy Documentation on Release + +on: + workflow_dispatch: + +jobs: + docs: + uses: scikit-package/release-scripts/.github/workflows/_publish-docs-on-release.yml@v0 + with: + project: diffpy.snmf + c_extension: false + headless: false diff --git a/.gitignore b/.gitignore index a25212ea..099e2948 100644 --- a/.gitignore +++ b/.gitignore @@ -10,6 +10,7 @@ __pycache__/ .Python env/ build/ +_build/ develop-eggs/ dist/ downloads/ @@ -90,10 +91,3 @@ target/ # Ipython Notebook .ipynb_checkpoints - -# version information -setup.cfg -/src/diffpy/*/version.cfg - -# Rever -rever/ diff --git a/.isort.cfg b/.isort.cfg index e0926f42..86f162b8 100644 --- a/.isort.cfg +++ b/.isort.cfg @@ -1,4 +1,5 @@ [settings] -line_length = 115 +# Keep import statement below line_length character limit +line_length = 79 multi_line_output = 3 include_trailing_comma = True diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 9cf0556f..0e4a84d1 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -1,14 +1,14 @@ default_language_version: - python: python3 + python: python3 ci: - autofix_commit_msg: | - [pre-commit.ci] auto fixes from pre-commit hooks - autofix_prs: true - autoupdate_branch: 'pre-commit-autoupdate' - autoupdate_commit_msg: '[pre-commit.ci] pre-commit autoupdate' - autoupdate_schedule: monthly - skip: [no-commit-to-branch] - submodules: false + autofix_commit_msg: | + [pre-commit.ci] auto fixes from pre-commit hooks + autofix_prs: true + autoupdate_branch: "pre-commit-autoupdate" + autoupdate_commit_msg: "[pre-commit.ci] pre-commit autoupdate" + autoupdate_schedule: monthly + skip: [no-commit-to-branch] + submodules: false repos: - repo: https://github.com/pre-commit/pre-commit-hooks rev: v4.6.0 @@ -47,6 +47,20 @@ repos: - repo: https://github.com/codespell-project/codespell rev: v2.3.0 hooks: - - id: codespell - additional_dependencies: - - tomli + - id: codespell + additional_dependencies: + - tomli + # prettier - multi formatter for .json, .yml, and .md files + - repo: https://github.com/pre-commit/mirrors-prettier + rev: f12edd9c7be1c20cfa42420fd0e6df71e42b51ea # frozen: v4.0.0-alpha.8 + hooks: + - id: prettier + additional_dependencies: + - "prettier@^3.2.4" + # docformatter - PEP 257 compliant docstring formatter + - repo: https://github.com/s-weigand/docformatter + rev: 5757c5190d95e5449f102ace83df92e7d3b06c6c + hooks: + - id: docformatter + additional_dependencies: [tomli] + args: [--in-place, --config, ./pyproject.toml] diff --git a/.readthedocs.yaml b/.readthedocs.yaml new file mode 100644 index 00000000..aaa88895 --- /dev/null +++ b/.readthedocs.yaml @@ -0,0 +1,13 @@ +version: 2 + +build: + os: "ubuntu-22.04" + tools: + python: "latest" + +python: + install: + - requirements: requirements/docs.txt + +sphinx: + configuration: docs/source/conf.py diff --git a/AUTHORS.rst b/AUTHORS.rst index 4546e682..dd58dd4c 100644 --- a/AUTHORS.rst +++ b/AUTHORS.rst @@ -1,7 +1,7 @@ Authors ======= -Billinge Group and community contributors. +Simon Billinge, John Halloran, Billinge Group members Contributors ------------ diff --git a/CHANGELOG.rst b/CHANGELOG.rst index 9b8d9a18..f29d3b53 100644 --- a/CHANGELOG.rst +++ b/CHANGELOG.rst @@ -1,52 +1,5 @@ ============= -Release Notes +Release notes ============= .. current developments - -0.1.3 -===== - -**Fixed:** - -* Updated README instructions for pip and conda-forge install -* Updated README instructions to check for successful installation - - -0.1.2 -===== - -**Added:** - -* Use GitHub Actions to build, release, upload to PyPI -* Added issue template for PyPI/GitHub release - -**Changed:** - -* Added tag check for release -* citation from arXiv to npj Comput Mater in docs - -**Fixed:** - -* Python version from 3.9 to 3.12 in CI news item -* tests folder at the root of the repo -* re-cookiecuter repo to groupd's package standard -* Add pip dependencies under pip.txt and conda dependencies under conda.txt - - -0.1.0 -===== - -**Added:** - -* Initial release of diffpy.snmf - -**Changed:** - -* Support Python version 3.12 -* Remove support for Python version 3.9 - -**Fixed:** - -* Repo structure modified to the new diffpy standard -* Code linting based on .pre-commit-config.yaml diff --git a/CODE-OF-CONDUCT.rst b/CODE-OF-CONDUCT.rst new file mode 100644 index 00000000..e8199ca5 --- /dev/null +++ b/CODE-OF-CONDUCT.rst @@ -0,0 +1,133 @@ +===================================== + Contributor Covenant Code of Conduct +===================================== + +Our Pledge +---------- + +We as members, contributors, and leaders pledge to make participation in our +community a harassment-free experience for everyone, regardless of age, body +size, visible or invisible disability, ethnicity, sex characteristics, gender +identity and expression, level of experience, education, socioeconomic status, +nationality, personal appearance, race, caste, color, religion, or sexual +identity and orientation. + +We pledge to act and interact in ways that contribute to an open, welcoming, +diverse, inclusive, and healthy community. + +Our Standards +------------- + +Examples of behavior that contributes to a positive environment for our +community include: + +* Demonstrating empathy and kindness toward other people +* Being respectful of differing opinions, viewpoints, and experiences +* Giving and gracefully accepting constructive feedback +* Accepting responsibility and apologizing to those affected by our mistakes, + and learning from the experience +* Focusing on what is best not just for us as individuals, but for the overall + community + +Examples of unacceptable behavior include: + +* The use of sexualized language or imagery, and sexual attention or advances of + any kind +* Trolling, insulting or derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or email address, + without their explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +Enforcement Responsibilities +---------------------------- + +Community leaders are responsible for clarifying and enforcing our standards of +acceptable behavior and will take appropriate and fair corrective action in +response to any behavior that they deem inappropriate, threatening, offensive, +or harmful. + +Community leaders have the right and responsibility to remove, edit, or reject +comments, commits, code, wiki edits, issues, and other contributions that are +not aligned to this Code of Conduct, and will communicate reasons for moderation +decisions when appropriate. + +Scope +----- + +This Code of Conduct applies within all community spaces, and also applies when +an individual is officially representing the community in public spaces. +Examples of representing our community include using an official email address, +posting via an official social media account, or acting as an appointed +representative at an online or offline event. + +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. + +All community leaders are obligated to respect the privacy and security of the +reporter of any incident. + +Enforcement Guidelines +---------------------- + +Community leaders will follow these Community Impact Guidelines in determining +the consequences for any action they deem in violation of this Code of Conduct: + +1. Correction +**************** + +**Community Impact**: Use of inappropriate language or other behavior deemed +unprofessional or unwelcome in the community. + +**Consequence**: A private, written warning from community leaders, providing +clarity around the nature of the violation and an explanation of why the +behavior was inappropriate. A public apology may be requested. + +2. Warning +************* + +**Community Impact**: A violation through a single incident or series of +actions. + +**Consequence**: A warning with consequences for continued behavior. No +interaction with the people involved, including unsolicited interaction with +those enforcing the Code of Conduct, for a specified period of time. This +includes avoiding interactions in community spaces as well as external channels +like social media. Violating these terms may lead to a temporary or permanent +ban. + +3. Temporary Ban +****************** + +**Community Impact**: A serious violation of community standards, including +sustained inappropriate behavior. + +**Consequence**: A temporary ban from any sort of interaction or public +communication with the community for a specified period of time. No public or +private interaction with the people involved, including unsolicited interaction +with those enforcing the Code of Conduct, is allowed during this period. +Violating these terms may lead to a permanent ban. + +4. Permanent Ban +****************** + +**Community Impact**: Demonstrating a pattern of violation of community +standards, including sustained inappropriate behavior, harassment of an +individual, or aggression toward or disparagement of classes of individuals. + +**Consequence**: A permanent ban from any sort of public interaction within the +community. + +Attribution +----------- + +This Code of Conduct is adapted from the `Contributor Covenant `_. + +Community Impact Guidelines were inspired by `Mozilla's code of conduct enforcement ladder `_. + +For answers to common questions about this code of conduct, see the `FAQ `_. `Translations are available `_ diff --git a/LICENSE.rst b/LICENSE.rst index 74fd798d..43d13fce 100644 --- a/LICENSE.rst +++ b/LICENSE.rst @@ -1,7 +1,6 @@ BSD 3-Clause License -Copyright (c) 2023-2024, The Trustees of Columbia University -in the City of New York. +Copyright (c) 2026, The Trustees of Columbia University in the City of New York. All rights reserved. Redistribution and use in source and binary forms, with or without diff --git a/README.rst b/README.rst index 2350f693..a7888cf3 100644 --- a/README.rst +++ b/README.rst @@ -8,7 +8,7 @@ :target: https://diffpy.github.io/diffpy.snmf :height: 100px -|PyPi| |Forge| |PythonVersion| |PR| +|PyPI| |Forge| |PythonVersion| |PR| |CI| |Codecov| |Black| |Tracking| @@ -25,8 +25,9 @@ :target: https://anaconda.org/conda-forge/diffpy.snmf .. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff + :target: https://github.com/diffpy/diffpy.snmf/pulls -.. |PyPi| image:: https://img.shields.io/pypi/v/diffpy.snmf +.. |PyPI| image:: https://img.shields.io/pypi/v/diffpy.snmf :target: https://pypi.org/project/diffpy.snmf/ .. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.snmf @@ -37,27 +38,16 @@ A python package implementing the stretched NMF algorithm. -``diffpy.snmf`` implements the stretched non negative matrix factorization (sNMF) and sparse stretched NMF -(ssNMF) algorithms. - -This algorithm is designed to do an NMF factorization on a set of signals ignoring any uniform stretching of the signal -on the independent variable axis. For example, for powder diffraction data taken from samples containing multiple -chemical phases where the measurements were done at different temperatures and the materials were undergoing thermal -expansion. +* LONGER DESCRIPTION HERE For more information about the diffpy.snmf library, please consult our `online documentation `_. Citation -------- -If you use this program for a scientific research that leads -to publication, we ask that you acknowledge use of the program -by citing the following paper in your publication: +If you use diffpy.snmf in a scientific publication, we would like you to cite this package as - Ran Gu, Yevgeny Rakita, Ling Lan, Zach Thatcher, Gabrielle E. Kamm, Daniel O’Nolan, Brennan Mcbride, Allison Wustrow, James R. Neilson, Karena W. Chapman, Qiang Du, and Simon J. L. Billinge, - `Stretched Non-negative Matrix Factorization - `__, - *npj Comput Mater* **10**, 193 (2024). + diffpy.snmf Package, https://github.com/diffpy/diffpy.snmf Installation ------------ @@ -76,10 +66,6 @@ The following creates and activates a new environment named ``diffpy.snmf_env`` conda create -n diffpy.snmf_env diffpy.snmf conda activate diffpy.snmf_env -To confirm that the installation was successful, type :: - - python -c "import diffpy.snmf; print(diffpy.snmf.__version__)" - The output should print the latest version displayed on the badges above. If the above does not work, you can use ``pip`` to download and install the latest release from @@ -94,6 +80,19 @@ and run the following :: pip install . +This package also provides command-line utilities. To check the software has been installed correctly, type :: + + diffpy.snmf --version + +You can also type the following command to verify the installation. :: + + python -c "import diffpy.snmf; print(diffpy.snmf.__version__)" + + +To view the basic usage and available commands, type :: + + diffpy.snmf -h + Getting Started --------------- @@ -102,9 +101,7 @@ You may consult our `online documentation Support and Contribute ---------------------- -`Diffpy user group `_ is the discussion forum for general questions and discussions about the use of diffpy.snmf. Please join the diffpy.snmf users community by joining the Google group. The diffpy.snmf project welcomes your expertise and enthusiasm! - -If you see a bug or want to request a feature, please `report it as an issue `_ and/or `submit a fix as a PR `_. You can also post it to the `Diffpy user group `_. +If you see a bug or want to request a feature, please `report it as an issue `_ and/or `submit a fix as a PR `_. Feel free to fork the project and contribute. To install diffpy.snmf in a development mode, with its sources being directly used by Python @@ -127,9 +124,14 @@ trying to commit again. Improvements and fixes are always appreciated. -Before contributing, please read our `Code of Conduct `_. +Before contributing, please read our `Code of Conduct `_. Contact ------- -For more information on diffpy.snmf please visit the project `web-page `_ or email Prof. Simon Billinge at sb2896@columbia.edu. +For more information on diffpy.snmf please visit the project `web-page `_ or email Simon Billinge at sb2896@columbia.edu. + +Acknowledgements +---------------- + +``diffpy.snmf`` is built and maintained with `scikit-package `_. diff --git a/cookiecutter.json b/cookiecutter.json new file mode 100644 index 00000000..e7ef6b76 --- /dev/null +++ b/cookiecutter.json @@ -0,0 +1,18 @@ +{ + "maintainer_name": "Simon Billinge", + "maintainer_email": "sb2896@columbia.edu", + "maintainer_github_username": "sbillinge", + "contributors": "Simon Billinge, John Halloran, Billinge Group members", + "license_holders": "The Trustees of Columbia University in the City of New York", + "project_name": "diffpy.snmf", + "github_username_or_orgname": "diffpy", + "github_repo_name": "diffpy.snmf", + "conda_pypi_package_dist_name": "diffpy.snmf", + "package_dir_name": "diffpy.snmf", + "project_short_description": "A python package implementing the stretched NMF algorithm.", + "project_keywords": "diffraction, PDF, x-ray, mapping", + "minimum_supported_python_version": "3.11", + "maximum_supported_python_version": "3.13", + "project_needs_c_code_compiled": "No", + "project_has_gui_tests": "No" +} diff --git a/docs/Makefile b/docs/Makefile new file mode 100644 index 00000000..fdc96a7a --- /dev/null +++ b/docs/Makefile @@ -0,0 +1,194 @@ +# Makefile for Sphinx documentation +# + +# You can set these variables from the command line. +SPHINXOPTS = +SPHINXBUILD = sphinx-build +PAPER = +BUILDDIR = build +BASENAME = $(subst .,,$(subst $() $(),,diffpy.snmf)) + +# User-friendly check for sphinx-build +ifeq ($(shell which $(SPHINXBUILD) >/dev/null 2>&1; echo $$?), 1) +$(error The '$(SPHINXBUILD)' command was not found. Make sure you have Sphinx installed, then set the SPHINXBUILD environment variable to point to the full path of the '$(SPHINXBUILD)' executable. Alternatively you can add the directory with the executable to your PATH. If you don't have Sphinx installed, grab it from http://sphinx-doc.org/) +endif + +# Internal variables. +PAPEROPT_a4 = -D latex_paper_size=a4 +PAPEROPT_letter = -D latex_paper_size=letter +ALLSPHINXOPTS = -d $(BUILDDIR)/doctrees $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source +# the i18n builder cannot share the environment and doctrees with the others +I18NSPHINXOPTS = $(PAPEROPT_$(PAPER)) $(SPHINXOPTS) source + +.PHONY: help clean html dirhtml singlehtml pickle json htmlhelp qthelp devhelp epub latex latexpdf text man changes linkcheck doctest gettext + +help: + @echo "Please use \`make ' where is one of" + @echo " html to make standalone HTML files" + @echo " dirhtml to make HTML files named index.html in directories" + @echo " singlehtml to make a single large HTML file" + @echo " pickle to make pickle files" + @echo " json to make JSON files" + @echo " htmlhelp to make HTML files and a HTML help project" + @echo " qthelp to make HTML files and a qthelp project" + @echo " devhelp to make HTML files and a Devhelp project" + @echo " epub to make an epub" + @echo " latex to make LaTeX files, you can set PAPER=a4 or PAPER=letter" + @echo " latexpdf to make LaTeX files and run them through pdflatex" + @echo " latexpdfja to make LaTeX files and run them through platex/dvipdfmx" + @echo " text to make text files" + @echo " man to make manual pages" + @echo " texinfo to make Texinfo files" + @echo " info to make Texinfo files and run them through makeinfo" + @echo " gettext to make PO message catalogs" + @echo " changes to make an overview of all changed/added/deprecated items" + @echo " xml to make Docutils-native XML files" + @echo " pseudoxml to make pseudoxml-XML files for display purposes" + @echo " linkcheck to check all external links for integrity" + @echo " doctest to run all doctests embedded in the documentation (if enabled)" + +clean: + rm -rf $(BUILDDIR)/* + +html: + $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR)/html + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/html." + +dirhtml: + $(SPHINXBUILD) -b dirhtml $(ALLSPHINXOPTS) $(BUILDDIR)/dirhtml + @echo + @echo "Build finished. The HTML pages are in $(BUILDDIR)/dirhtml." + +singlehtml: + $(SPHINXBUILD) -b singlehtml $(ALLSPHINXOPTS) $(BUILDDIR)/singlehtml + @echo + @echo "Build finished. The HTML page is in $(BUILDDIR)/singlehtml." + +pickle: + $(SPHINXBUILD) -b pickle $(ALLSPHINXOPTS) $(BUILDDIR)/pickle + @echo + @echo "Build finished; now you can process the pickle files." + +json: + $(SPHINXBUILD) -b json $(ALLSPHINXOPTS) $(BUILDDIR)/json + @echo + @echo "Build finished; now you can process the JSON files." + +htmlhelp: + $(SPHINXBUILD) -b htmlhelp $(ALLSPHINXOPTS) $(BUILDDIR)/htmlhelp + @echo + @echo "Build finished; now you can run HTML Help Workshop with the" \ + ".hhp project file in $(BUILDDIR)/htmlhelp." + +qthelp: + $(SPHINXBUILD) -b qthelp $(ALLSPHINXOPTS) $(BUILDDIR)/qthelp + @echo + @echo "Build finished; now you can run "qcollectiongenerator" with the" \ + ".qhcp project file in $(BUILDDIR)/qthelp, like this:" + @echo "# qcollectiongenerator $(BUILDDIR)/qthelp/$(BASENAME).qhcp" + @echo "To view the help file:" + @echo "# assistant -collectionFile $(BUILDDIR)/qthelp/$(BASENAME).qhc" + +devhelp: + $(SPHINXBUILD) -b devhelp $(ALLSPHINXOPTS) $(BUILDDIR)/devhelp + @echo + @echo "Build finished." + @echo "To view the help file:" + @echo "# mkdir -p $$HOME/.local/share/devhelp/$(BASENAME)" + @echo "# ln -s $(BUILDDIR)/devhelp $$HOME/.local/share/devhelp/$(BASENAME)" + @echo "# devhelp" + +epub: + $(SPHINXBUILD) -b epub $(ALLSPHINXOPTS) $(BUILDDIR)/epub + @echo + @echo "Build finished. The epub file is in $(BUILDDIR)/epub." + +latex: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo + @echo "Build finished; the LaTeX files are in $(BUILDDIR)/latex." + @echo "Run \`make' in that directory to run these through (pdf)latex" \ + "(use \`make latexpdf' here to do that automatically)." + +latexpdf: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through pdflatex..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +latexpdfja: + $(SPHINXBUILD) -b latex $(ALLSPHINXOPTS) $(BUILDDIR)/latex + @echo "Running LaTeX files through platex and dvipdfmx..." + $(MAKE) -C $(BUILDDIR)/latex all-pdf-ja + @echo "pdflatex finished; the PDF files are in $(BUILDDIR)/latex." + +text: + $(SPHINXBUILD) -b text $(ALLSPHINXOPTS) $(BUILDDIR)/text + @echo + @echo "Build finished. The text files are in $(BUILDDIR)/text." + +man: + $(SPHINXBUILD) -b man $(ALLSPHINXOPTS) $(BUILDDIR)/man + @echo + @echo "Build finished. The manual pages are in $(BUILDDIR)/man." + +texinfo: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo + @echo "Build finished. The Texinfo files are in $(BUILDDIR)/texinfo." + @echo "Run \`make' in that directory to run these through makeinfo" \ + "(use \`make info' here to do that automatically)." + +info: + $(SPHINXBUILD) -b texinfo $(ALLSPHINXOPTS) $(BUILDDIR)/texinfo + @echo "Running Texinfo files through makeinfo..." + make -C $(BUILDDIR)/texinfo info + @echo "makeinfo finished; the Info files are in $(BUILDDIR)/texinfo." + +gettext: + $(SPHINXBUILD) -b gettext $(I18NSPHINXOPTS) $(BUILDDIR)/locale + @echo + @echo "Build finished. The message catalogs are in $(BUILDDIR)/locale." + +changes: + $(SPHINXBUILD) -b changes $(ALLSPHINXOPTS) $(BUILDDIR)/changes + @echo + @echo "The overview file is in $(BUILDDIR)/changes." + +linkcheck: + $(SPHINXBUILD) -b linkcheck $(ALLSPHINXOPTS) $(BUILDDIR)/linkcheck + @echo + @echo "Link check complete; look for any errors in the above output " \ + "or in $(BUILDDIR)/linkcheck/output.txt." + +doctest: + $(SPHINXBUILD) -b doctest $(ALLSPHINXOPTS) $(BUILDDIR)/doctest + @echo "Testing of doctests in the sources finished, look at the " \ + "results in $(BUILDDIR)/doctest/output.txt." + +# Manual publishing to the gh-pages branch + +GITREPOPATH = $(shell cd $(CURDIR) && git rev-parse --git-dir) +GITREMOTE = origin +GITREMOTEURL = $(shell git config --get remote.$(GITREMOTE).url) +GITLASTCOMMIT = $(shell git rev-parse --short HEAD) + +publish: + @test -d build/html || \ + ( echo >&2 "Run 'make html' first!"; false ) + git show-ref --verify --quiet refs/heads/gh-pages || \ + git branch --track gh-pages $(GITREMOTE)/gh-pages + test -d build/gh-pages || \ + git clone -s -b gh-pages $(GITREPOPATH) build/gh-pages + cd build/gh-pages && \ + git pull $(GITREMOTEURL) gh-pages + rsync -acv --delete --exclude=.git --exclude=.rsync-exclude \ + --exclude-from=build/gh-pages/.rsync-exclude \ + --link-dest=$(CURDIR)/build/html build/html/ build/gh-pages/ + cd build/gh-pages && \ + git add --all . && \ + git diff --cached --quiet || \ + git commit -m "Sync with the source at $(GITLASTCOMMIT)." + cd build/gh-pages && \ + git push origin gh-pages diff --git a/docs/make.bat b/docs/make.bat new file mode 100644 index 00000000..ac53d5bd --- /dev/null +++ b/docs/make.bat @@ -0,0 +1,36 @@ +@ECHO OFF + +pushd %~dp0 + +REM Command file for Sphinx documentation + +if "%SPHINXBUILD%" == "" ( + set SPHINXBUILD=sphinx-build +) +set SOURCEDIR=source +set BUILDDIR=build +set SPHINXPROJ=PackagingScientificPython + +if "%1" == "" goto help + +%SPHINXBUILD% >NUL 2>NUL +if errorlevel 9009 ( + echo. + echo.The 'sphinx-build' command was not found. Make sure you have Sphinx + echo.installed, then set the SPHINXBUILD environment variable to point + echo.to the full path of the 'sphinx-build' executable. Alternatively you + echo.may add the Sphinx directory to PATH. + echo. + echo.If you don't have Sphinx installed, grab it from + echo.http://sphinx-doc.org/ + exit /b 1 +) + +%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% +goto end + +:help +%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% + +:end +popd diff --git a/docs/source/_static/.placeholder b/docs/source/_static/.placeholder new file mode 100644 index 00000000..e69de29b diff --git a/docs/source/api/diffpy.snmf.rst b/docs/source/api/diffpy.snmf.rst new file mode 100644 index 00000000..28f90a6d --- /dev/null +++ b/docs/source/api/diffpy.snmf.rst @@ -0,0 +1,30 @@ +:tocdepth: -1 + +|title| +======= + +.. |title| replace:: diffpy.snmf package + +.. automodule:: diffpy.snmf + :members: + :undoc-members: + :show-inheritance: + +Subpackages +----------- + +.. toctree:: + diffpy.snmf.example_package + +Submodules +---------- + +|module| +-------- + +.. |module| replace:: diffpy.snmf.example_submodule module + +.. automodule:: diffpy.snmf.example_submodule + :members: + :undoc-members: + :show-inheritance: diff --git a/docs/source/conf.py b/docs/source/conf.py new file mode 100644 index 00000000..46f083e3 --- /dev/null +++ b/docs/source/conf.py @@ -0,0 +1,322 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +# +# diffpy.snmf documentation build configuration file, created by # noqa: E501 +# sphinx-quickstart on Thu Jan 30 15:49:41 2014. +# +# This file is execfile()d with the current directory set to its +# containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys +import time +from importlib.metadata import version +from pathlib import Path + +# Attempt to import the version dynamically from GitHub tag. +try: + fullversion = version("diffpy.snmf") +except Exception: + fullversion = "No version found. The correct version will appear in the released version." # noqa: E501 + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use Path().resolve() to make it absolute, like shown here. # noqa: E501 +# sys.path.insert(0, str(Path(".").resolve())) +sys.path.insert(0, str(Path("../..").resolve())) +sys.path.insert(0, str(Path("../../src").resolve())) + +# abbreviations +ab_authors = "Simon Billinge, John Halloran, Billinge Group members" + +# -- General configuration ------------------------------------------------ + +# If your documentation needs a minimal Sphinx version, state it here. +# needs_sphinx = '1.0' + +# Add any Sphinx extension module names here, as strings. They can be +# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom +# ones. +extensions = [ + "sphinx.ext.autodoc", + "sphinx.ext.napoleon", + "sphinx.ext.todo", + "sphinx.ext.viewcode", + "sphinx.ext.intersphinx", + "sphinx_rtd_theme", + "sphinx_copybutton", + "m2r", +] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ["_templates"] + +# The suffix(es) of source filenames. +# You can specify multiple suffix as a list of string: +# +source_suffix = [".rst", ".md"] + +# The encoding of source files. +# source_encoding = 'utf-8-sig' + +# The master toctree document. +master_doc = "index" + +# General information about the project. +project = "diffpy.snmf" +copyright = "%Y, The Trustees of Columbia University in the City of New York" + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. + +# The short X.Y version. +version = "".join(fullversion.split(".post")[:1]) +# The full version, including alpha/beta/rc tags. +release = fullversion + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +# language = None + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +# today = '' +today = time.strftime("%B %d, %Y", time.localtime()) +year = today.split()[-1] +# Else, today_fmt is used as the format for a strftime call. +# today_fmt = '%B %d, %Y' +# substitute YEAR in the copyright string +copyright = copyright.replace("%Y", year) + +# For sphinx_copybutton extension. +# Do not copy "$" for shell commands in code-blocks. +copybutton_prompt_text = r"^\$ " +copybutton_prompt_is_regexp = True + +# List of patterns, relative to source directory, that match files and +# directories to ignore when looking for source files. +exclude_patterns = ["build"] + +# The reST default role (used for this markup: `text`) to use for all +# documents. +# default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +# add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +# add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +# show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = "sphinx" + +# A list of ignored prefixes for module index sorting. +modindex_common_prefix = ["diffpy.snmf"] + +# Display all warnings for missing links. +nitpicky = True + +# -- Options for HTML output ---------------------------------------------- + +# The theme to use for HTML and HTML Help pages. See the documentation for +# a list of builtin themes. +# +html_theme = "sphinx_rtd_theme" + +html_context = { + "display_github": True, + "github_user": "diffpy", + "github_repo": "diffpy.snmf", + "github_version": "main", + "conf_py_path": "/docs/source/", +} + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +# +html_theme_options = { + "navigation_with_keys": "true", +} + +# Add any paths that contain custom themes here, relative to this directory. +# html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +# html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +# html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +# html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +# html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +# html_static_path = ['_static'] + +# Add any extra paths that contain custom files (such as robots.txt or +# .htaccess) here, relative to this directory. These files are copied +# directly to the root of the documentation. +# html_extra_path = [] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +# html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +# html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +# html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +# html_additional_pages = {} + +# If false, no module index is generated. +# html_domain_indices = True + +# If false, no index is generated. +# html_use_index = True + +# If true, the index is split into individual pages for each letter. +# html_split_index = False + +# If true, links to the reST sources are added to the pages. +# html_show_sourcelink = True + +# If true, "Created using Sphinx" is shown in the HTML footer. Default is True. +# html_show_sphinx = True + +# If true, "(C) Copyright ..." is shown in the HTML footer. Default is True. +# html_show_copyright = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +# html_use_opensearch = '' + +# This is the file name suffix for HTML files (e.g. ".xhtml"). +# html_file_suffix = None + +# Output file base name for HTML help builder. +basename = "diffpy.snmf".replace(" ", "").replace(".", "") +htmlhelp_basename = basename + "doc" + + +# -- Options for LaTeX output --------------------------------------------- + +latex_elements = { + # The paper size ('letterpaper' or 'a4paper'). + # 'papersize': 'letterpaper', + # The font size ('10pt', '11pt' or '12pt'). + # 'pointsize': '10pt', + # Additional stuff for the LaTeX preamble. + # 'preamble': '', +} + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, +# author, documentclass [howto, manual, or own class]). +latex_documents = [ + ( + "index", + "diffpy.snmf.tex", + "diffpy.snmf Documentation", + ab_authors, + "manual", + ), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +# latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +# latex_use_parts = False + +# If true, show page references after internal links. +# latex_show_pagerefs = False + +# If true, show URL addresses after external links. +# latex_show_urls = False + +# Documents to append as an appendix to all manuals. +# latex_appendices = [] + +# If false, no module index is generated. +# latex_domain_indices = True + + +# -- Options for manual page output --------------------------------------- + +# One entry per manual page. List of tuples +# (source start file, name, description, authors, manual section). +man_pages = [ + ( + "index", + "diffpy.snmf", + "diffpy.snmf Documentation", + ab_authors, + 1, + ) +] + +# If true, show URL addresses after external links. +# man_show_urls = False + + +# -- Options for Texinfo output ------------------------------------------- + +# Grouping the document tree into Texinfo files. List of tuples +# (source start file, target name, title, author, +# dir menu entry, description, category) +texinfo_documents = [ + ( + "index", + "diffpy.snmf", + "diffpy.snmf Documentation", + ab_authors, + "diffpy.snmf", + "One line description of project.", + "Miscellaneous", + ), +] + +# Documents to append as an appendix to all manuals. +# texinfo_appendices = [] + +# If false, no module index is generated. +# texinfo_domain_indices = True + +# How to display URL addresses: 'footnote', 'no', or 'inline'. +# texinfo_show_urls = 'footnote' + +# If true, do not generate a @detailmenu in the "Top" node's menu. +# texinfo_no_detailmenu = False + + +# Example configuration for intersphinx: refer to the Python standard library. +# intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/docs/source/img/scikit-package-logo-text.png b/docs/source/img/scikit-package-logo-text.png new file mode 100644 index 0000000000000000000000000000000000000000..823178dcb1316d5cfd09bc43d8210e5c4ce38f28 GIT binary patch literal 187608 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 h|9pew|C30$uOMa3u}J+)EaB{~z=&QIY@v literal 0 HcmV?d00001 diff --git a/docs/source/index.rst b/docs/source/index.rst new file mode 100644 index 00000000..37181798 --- /dev/null +++ b/docs/source/index.rst @@ -0,0 +1,56 @@ +####### +|title| +####### + +.. |title| replace:: diffpy.snmf documentation + +``diffpy.snmf`` - A python package implementing the stretched NMF algorithm. + +| Software version |release| +| Last updated |today|. + +=============== +Getting started +=============== + +Welcome to the ``diffpy.snmf`` documentation! + +To get started, please visit the :ref:`Getting started ` page. + +======= +Authors +======= + +``diffpy.snmf`` is developed by Simon Billinge, John Halloran, Billinge Group members. The maintainer for this project is Simon Billinge. For a detailed list of contributors see +https://github.com/diffpy/diffpy.snmf/graphs/contributors. + +============ +Installation +============ + +See the `README `_ +file included with the distribution. + +================ +Acknowledgements +================ + +``diffpy.snmf`` is built and maintained with `scikit-package `_. + +================= +Table of contents +================= +.. toctree:: + :maxdepth: 2 + + getting-started + Package API + release + license + +======= +Indices +======= + +* :ref:`genindex` +* :ref:`search` diff --git a/docs/source/license.rst b/docs/source/license.rst new file mode 100644 index 00000000..7428e287 --- /dev/null +++ b/docs/source/license.rst @@ -0,0 +1,38 @@ +:tocdepth: -1 + +.. index:: license + +License +####### + +OPEN SOURCE LICENSE AGREEMENT +============================= +BSD 3-Clause License + +Copyright (c) 2026, The Trustees of Columbia University in the City of New York. +All Rights Reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/docs/source/release.rst b/docs/source/release.rst new file mode 100644 index 00000000..27cd0cc9 --- /dev/null +++ b/docs/source/release.rst @@ -0,0 +1,5 @@ +:tocdepth: -1 + +.. index:: release notes + +.. include:: ../../CHANGELOG.rst diff --git a/docs/source/snippets/example-table.rst b/docs/source/snippets/example-table.rst new file mode 100644 index 00000000..7c4c11da --- /dev/null +++ b/docs/source/snippets/example-table.rst @@ -0,0 +1,28 @@ +.. list-table:: 5 levels of reusing/sharing code + :widths: 5 15 40 40 + :header-rows: 1 + + * - Level + - Name + - Scope + - How to setup + * - 1 + - ``function`` + - Reuse code in the single file. + - See Level 1 tutorial + * - 2 + - ``module`` + - Reuse code across files. + - See Level 2 tutorial + * - 3 + - ``workspace`` + - Reuse code across project folders. + - ``package create workspace`` + * - 4 + - ``system`` + - Reuse code across any files in the computer. + - ``package create system`` + * - 5 + - ``public`` + - Share code as publicly installable package. + - ``package create public`` diff --git a/pyproject.toml b/pyproject.toml index 08a90b6e..2aa9db9f 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,17 +6,17 @@ build-backend = "setuptools.build_meta" name = "diffpy.snmf" dynamic=['version', 'dependencies'] authors = [ - { name="Simon J.L. Billinge group", email="simon.billinge@gmail.com" }, + { name="Simon Billinge", email="sb2896@columbia.edu" }, ] maintainers = [ - { name="Simon J.L. Billinge group", email="simon.billinge@gmail.com" }, + { name="Simon Billinge", email="sb2896@columbia.edu" }, ] -description = "Python package implementing the stretched NMF algorithm." -keywords = ['diffpy', 'PDF'] +description = "A python package implementing the stretched NMF algorithm." +keywords = ['diffraction', 'PDF', 'x-ray', 'mapping'] readme = "README.rst" requires-python = ">=3.11, <3.14" classifiers = [ - 'Development Status :: 4 - Beta', + 'Development Status :: 5 - Production/Stable', 'Environment :: Console', 'Intended Audience :: Developers', 'Intended Audience :: Science/Research', @@ -42,15 +42,15 @@ template = "{tag}" dev_template = "{tag}" dirty_template = "{tag}" -[project.scripts] -snmf = "diffpy.snmf.stretchednmfapp:main" - [tool.setuptools.packages.find] where = ["src"] # list of folders that contain the packages (["."] by default) include = ["*"] # package names should match these glob patterns (["*"] by default) exclude = [] # exclude packages matching these glob patterns (empty by default) namespaces = false # to disable scanning PEP 420 namespaces (true by default) +[project.scripts] +diffpy-snmf = "diffpy.snmf.app:main" + [tool.setuptools.dynamic] dependencies = {file = ["requirements/pip.txt"]} @@ -59,29 +59,30 @@ exclude-file = ".codespell/ignore_lines.txt" ignore-words = ".codespell/ignore_words.txt" skip = "*.cif,*.dat" +[tool.docformatter] +recursive = true +wrap-summaries = 72 +wrap-descriptions = 72 + [tool.black] line-length = 79 include = '\.pyi?$' exclude = ''' /( \.git -| \.hg -| \.mypy_cache -| \.tox -| \.venv -| \.rst -| \.txt -| _build -| buck-out -| build -| dist -| blib2to3 -| tests/data + | \.hg + | \.mypy_cache + | \.tox + | \.venv + | \.rst + | \.txt + | _build + | buck-out + | build + | dist + + # The following are specific to Black, you probably don't want those. + | blib2to3 + | tests/data )/ ''' - -[tool.pytest.ini_options] -markers = [ - "slow: marks tests as slow (deselect with '-m \"not slow\"')", -] -testpaths = ["tests"] diff --git a/requirements/conda.txt b/requirements/conda.txt index 60eeedae..24ce15ab 100644 --- a/requirements/conda.txt +++ b/requirements/conda.txt @@ -1,6 +1 @@ numpy -matplotlib -scipy -cvxpy -diffpy.utils -numdifftools diff --git a/requirements/docs.txt b/requirements/docs.txt index ab17b1c8..5f34c6ed 100644 --- a/requirements/docs.txt +++ b/requirements/docs.txt @@ -1,4 +1,5 @@ sphinx sphinx_rtd_theme +sphinx-copybutton doctr m2r diff --git a/requirements/pip.txt b/requirements/pip.txt index 7f992d10..24ce15ab 100644 --- a/requirements/pip.txt +++ b/requirements/pip.txt @@ -1,4 +1 @@ numpy -scipy -diffpy.utils -numdifftools diff --git a/src/diffpy/__init__.py b/src/diffpy/__init__.py index 8f8f6bdb..71a432f2 100644 --- a/src/diffpy/__init__.py +++ b/src/diffpy/__init__.py @@ -1,7 +1,7 @@ #!/usr/bin/env python ############################################################################## # -# (c) 2024 The Trustees of Columbia University in the City of New York. +# (c) 2026 The Trustees of Columbia University in the City of New York. # All rights reserved. # # File coded by: Billinge Group members and community contributors. @@ -12,11 +12,3 @@ # See LICENSE.rst for license information. # ############################################################################## - -"""Blank namespace package for module diffpy.""" - -from pkgutil import extend_path - -__path__ = extend_path(__path__, __name__) - -# End of file diff --git a/src/diffpy/snmf/__init__.py b/src/diffpy/snmf/__init__.py index da8bc9b3..39c0437d 100644 --- a/src/diffpy/snmf/__init__.py +++ b/src/diffpy/snmf/__init__.py @@ -1,10 +1,10 @@ #!/usr/bin/env python ############################################################################## # -# (c) 2024 The Trustees of Columbia University in the City of New York. +# (c) 2026 The Trustees of Columbia University in the City of New York. # All rights reserved. # -# File coded by: Billinge Group members and community contributors. +# File coded by: Simon Billinge, John Halloran, Billinge Group members. # # See GitHub contributions for a more detailed list of contributors. # https://github.com/diffpy/diffpy.snmf/graphs/contributors @@ -12,13 +12,10 @@ # See LICENSE.rst for license information. # ############################################################################## - """A python package implementing the stretched NMF algorithm.""" # package version -from diffpy.snmf.version import __version__ - -__all__ = ["__version__", "SNMFOptimizer"] +from diffpy.snmf.version import __version__ # noqa # silence the pyflakes syntax checker assert __version__ or True diff --git a/src/diffpy/snmf/snmf_app.py b/src/diffpy/snmf/snmf_app.py new file mode 100644 index 00000000..5d3550fd --- /dev/null +++ b/src/diffpy/snmf/snmf_app.py @@ -0,0 +1,33 @@ +import argparse + +from diffpy.snmf.version import __version__ # noqa + + +def main(): + parser = argparse.ArgumentParser( + prog="diffpy.snmf", + description=( + "A python package implementing the stretched NMF algorithm.\n\n" + "For more information, visit: " + "https://github.com/diffpy/diffpy.snmf/" + ), + formatter_class=argparse.RawDescriptionHelpFormatter, + ) + + parser.add_argument( + "--version", + action="store_true", + help="Show the program's version number and exit", + ) + + args = parser.parse_args() + + if args.version: + print(f"diffpy.snmf {__version__}") + else: + # Default behavior when no arguments are given + parser.print_help() + + +if __name__ == "__main__": + main() diff --git a/src/diffpy/snmf/version.py b/src/diffpy/snmf/version.py index 202bd54e..73004a2d 100644 --- a/src/diffpy/snmf/version.py +++ b/src/diffpy/snmf/version.py @@ -1,26 +1,26 @@ #!/usr/bin/env python ############################################################################## # -# (c) 2024 The Trustees of Columbia University in the City of New York. +# (c) 2026 The Trustees of Columbia University in the City of New York. # All rights reserved. # -# File coded by: Billinge Group members and community contributors. +# File coded by: Simon Billinge, John Halloran, Billinge Group members. # # See GitHub contributions for a more detailed list of contributors. -# https://github.com/diffpy/diffpy.snmf/graphs/contributors +# https://github.com/diffpy/diffpy.snmf/graphs/contributors # noqa: E501 # # See LICENSE.rst for license information. # ############################################################################## - """Definition of __version__.""" # We do not use the other three variables, but can be added back if needed. # __all__ = ["__date__", "__git_commit__", "__timestamp__", "__version__"] # obtain version information -from importlib.metadata import version - -__version__ = version("diffpy.snmf") +from importlib.metadata import PackageNotFoundError, version -# End of file +try: + __version__ = version("diffpy.snmf") +except PackageNotFoundError: + __version__ = "unknown" diff --git a/tests/test_version.py b/tests/test_version.py index d3293db5..cac08228 100644 --- a/tests/test_version.py +++ b/tests/test_version.py @@ -1,9 +1,10 @@ -"""Unit tests for __version__.py""" +"""Unit tests for __version__.py.""" -import diffpy.snmf +import diffpy.snmf # noqa def test_package_version(): - """Ensure the package version is defined and not set to the initial placeholder.""" + """Ensure the package version is defined and not set to the initial + placeholder.""" assert hasattr(diffpy.snmf, "__version__") assert diffpy.snmf.__version__ != "0.0.0" From 482d994d18d4e4902bb1ac4304961d4d42ee3b6f Mon Sep 17 00:00:00 2001 From: John Halloran Date: Sat, 31 Jan 2026 15:18:21 -0500 Subject: [PATCH 2/3] chore: restore citation information --- README.rst | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/README.rst b/README.rst index a7888cf3..f26f845d 100644 --- a/README.rst +++ b/README.rst @@ -38,7 +38,10 @@ A python package implementing the stretched NMF algorithm. -* LONGER DESCRIPTION HERE +This algorithm is designed to do an NMF factorization on a set of signals ignoring any uniform stretching of the signal +on the independent variable axis. For example, for powder diffraction data taken from samples containing multiple +chemical phases where the measurements were done at different temperatures and the materials were undergoing thermal +expansion. For more information about the diffpy.snmf library, please consult our `online documentation `_. @@ -47,7 +50,10 @@ Citation If you use diffpy.snmf in a scientific publication, we would like you to cite this package as - diffpy.snmf Package, https://github.com/diffpy/diffpy.snmf + Ran Gu, Yevgeny Rakita, Ling Lan, Zach Thatcher, Gabrielle E. Kamm, Daniel O’Nolan, Brennan Mcbride, Allison Wustrow, James R. Neilson, Karena W. Chapman, Qiang Du, and Simon J. L. Billinge, + `Stretched Non-negative Matrix Factorization + `__, + *npj Comput Mater* **10**, 193 (2024). Installation ------------ From a54b3ee09d7dd5f6efa6bae073fac90bd84b0705 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Sat, 31 Jan 2026 20:20:32 +0000 Subject: [PATCH 3/3] [pre-commit.ci] auto fixes from pre-commit hooks --- src/diffpy/snmf/snmf_class.py | 65 ++++++++++++++++------------------- 1 file changed, 30 insertions(+), 35 deletions(-) diff --git a/src/diffpy/snmf/snmf_class.py b/src/diffpy/snmf/snmf_class.py index 13076d3f..a382153b 100644 --- a/src/diffpy/snmf/snmf_class.py +++ b/src/diffpy/snmf/snmf_class.py @@ -7,7 +7,8 @@ class SNMFOptimizer: - """An implementation of stretched NMF (sNMF), including sparse stretched NMF. + """An implementation of stretched NMF (sNMF), including sparse + stretched NMF. Instantiating the SNMFOptimizer class prepares initial guesses and sets up the optimization. It can then be run using fit(). @@ -174,7 +175,8 @@ def __init__( ) def fit(self, rho=0, eta=0, reset=True): - """Run the sNMF optimization with the given parameters, using the setup from __init__. + """Run the sNMF optimization with the given parameters, using + the setup from __init__. Parameters ---------- @@ -412,8 +414,8 @@ def outer_loop(self): ) def get_residual_matrix(self, components=None, weights=None, stretch=None): - """ - Return the residuals (difference) between the source matrix and its reconstruction. + """Return the residuals (difference) between the source matrix + and its reconstruction. Parameters ---------- @@ -439,9 +441,8 @@ def get_residual_matrix(self, components=None, weights=None, stretch=None): return residuals def get_objective_function(self, residuals=None, stretch=None): - """ - Return the objective value, passing stored attributes or overrides - to _compute_objective_function(). + """Return the objective value, passing stored attributes or + overrides to _compute_objective_function(). Parameters ---------- @@ -467,11 +468,12 @@ def get_objective_function(self, residuals=None, stretch=None): def compute_stretched_components( self, components=None, weights=None, stretch=None ): - """ - Interpolates each component along its sample axis according to per-(component, signal) - stretch factors, then applies per-(component, signal) weights. Also computes the - first and second derivatives with respect to stretch. Left and right, respectively, - refer to the sample prior to and subsequent to the interpolated sample's position. + """Interpolates each component along its sample axis according + to per-(component, signal) stretch factors, then applies + per-(component, signal) weights. Also computes the first and + second derivatives with respect to stretch. Left and right, + respectively, refer to the sample prior to and subsequent to the + interpolated sample's position. Inputs ------ @@ -559,10 +561,9 @@ def compute_stretched_components( def apply_transformation_matrix( self, stretch=None, weights=None, residuals=None ): - """ - Computes the transformation matrix `stretch_transformed` for residuals, - using scaling matrix `stretch` and weight coefficients `weights`. - """ + """Computes the transformation matrix `stretch_transformed` for + residuals, using scaling matrix `stretch` and weight + coefficients `weights`.""" if stretch is None: stretch = self.stretch_ @@ -679,9 +680,8 @@ def solve_quadratic_program(self, t, m): ) # Ensure non-negative values in case of solver tolerance issues def update_components(self): - """ - Updates `components` using gradient-based optimization with adaptive step size. - """ + """Updates `components` using gradient-based optimization with + adaptive step size.""" # Compute stretched components using the interpolation function stretched_components, _, _ = ( self.compute_stretched_components() @@ -760,10 +760,9 @@ def update_components(self): break def update_weights(self): - """ - Updates weights by building the stretched component matrix `stretched_comps` with np.interp - and solving a quadratic program for each signal. - """ + """Updates weights by building the stretched component matrix + `stretched_comps` with np.interp and solving a quadratic program + for each signal.""" sample_indices = np.arange(self.signal_length) for signal in range(self.n_signals): @@ -825,9 +824,8 @@ def regularize_function(self, stretch=None): return fun, gra def update_stretch(self): - """ - Updates stretching matrix using constrained optimization (equivalent to fmincon in MATLAB). - """ + """Updates stretching matrix using constrained optimization + (equivalent to fmincon in MATLAB).""" # Flatten stretch for compatibility with the optimizer (since SciPy expects 1D input) stretch_flat_initial = self.stretch_.flatten() @@ -862,8 +860,8 @@ def objective(stretch_vec): def _compute_objective_function( components, residuals, stretch, rho, eta, spline_smooth_operator ): - r""" - Computes the objective function used in stretched non-negative matrix factorization. + r"""Computes the objective function used in stretched non- + negative matrix factorization. Parameters ---------- @@ -906,7 +904,6 @@ def _compute_objective_function( - :math:`\eta = 0` — no sparsity promotion on components. - :math:`\rho = \eta = 0` — reduces to the classical NMF least-squares objective :math:`\tfrac{1}{2} \lVert Z - YX \rVert_F^2`. - """ residual_term = 0.5 * np.linalg.norm(residuals, "fro") ** 2 regularization_term = ( @@ -919,9 +916,8 @@ def _compute_objective_function( def cubic_largest_real_root(p, q): - """ - Solves x^3 + p*x + q = 0 element-wise for matrices, returning the largest real root. - """ + """Solves x^3 + p*x + q = 0 element-wise for matrices, returning the + largest real root.""" # Handle special case where q == 0 y = np.where( q == 0, np.maximum(0, -p) ** 0.5, np.zeros_like(p) @@ -956,9 +952,8 @@ def cubic_largest_real_root(p, q): def reconstruct_matrix(components, weights, stretch): - """ - Construct the approximation of the source matrix corresponding to the - given components, weights, and stretch factors. + """Construct the approximation of the source matrix corresponding to + the given components, weights, and stretch factors. Each component profile is stretched, interpolated to fractional positions, weighted per signal, and summed to form the reconstruction.