Skip to content

Refactor PDFmorph to diffpy.morph #172

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 3 commits into from
Mar 19, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion .github/workflows/build-wheel-release-upload.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ jobs:
release:
uses: Billingegroup/release-scripts/.github/workflows/_build-wheel-release-upload.yml@v0
with:
project: diffpy.pdfmorph
project: diffpy.morph
secrets:
PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
PAT_TOKEN: ${{ secrets.PAT_TOKEN }}
2 changes: 1 addition & 1 deletion .github/workflows/check-news-item.yml
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ jobs:
check-news-item:
uses: Billingegroup/release-scripts/.github/workflows/_check-news-item.yml@v0
with:
project: diffpy.pdfmorph
project: diffpy.morph
2 changes: 1 addition & 1 deletion .github/workflows/matrix-and-codecov-on-merge-to-main.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
matrix-coverage:
uses: Billingegroup/release-scripts/.github/workflows/_matrix-and-codecov-on-merge-to-main.yml@v0
with:
project: diffpy.pdfmorph
project: diffpy.morph
c_extension: false
headless: false
secrets:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/tests-on-pr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ jobs:
tests-on-pr:
uses: Billingegroup/release-scripts/.github/workflows/_tests-on-pr.yml@v0
with:
project: diffpy.pdfmorph
project: diffpy.morph
c_extension: false
headless: false
secrets:
Expand Down
2 changes: 1 addition & 1 deletion AUTHORS.rst
Original file line number Diff line number Diff line change
Expand Up @@ -7,4 +7,4 @@ Contributors
------------

For a list of contributors, visit
https://github.com/diffpy/diffpy.pdfmorph/graphs/contributors
https://github.com/diffpy/diffpy.morph/graphs/contributors
100 changes: 50 additions & 50 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
|Icon| `diffpy.pdfmorph <https://diffpy.github.io/diffpy.pdfmorph>`_
====================================================================
|Icon| `diffpy.morph <https://diffpy.github.io/diffpy.morph>`_
==============================================================

.. |Icon| image:: https://avatars.githubusercontent.com/diffpy
:target: https://diffpy.github.io/diffpy.pdfmorph
:target: https://diffpy.github.io/diffpy.morph
:height: 100px

|PyPi| |Forge| |PythonVersion| |PR|
Expand All @@ -12,29 +12,29 @@
.. |Black| image:: https://img.shields.io/badge/code_style-black-black
:target: https://github.com/psf/black

.. |CI| image:: https://github.com/diffpy/diffpy.pdfmorph/actions/workflows/matrix-and-codecov-on-merge-to-main.yml/badge.svg
:target: https://github.com/diffpy/diffpy.pdfmorph/actions/workflows/matrix-and-codecov-on-merge-to-main.yml
.. |CI| image:: https://github.com/diffpy/diffpy.morph/actions/workflows/matrix-and-codecov-on-merge-to-main.yml/badge.svg
:target: https://github.com/diffpy/diffpy.morph/actions/workflows/matrix-and-codecov-on-merge-to-main.yml

.. |Codecov| image:: https://codecov.io/gh/diffpy/diffpy.pdfmorph/branch/main/graph/badge.svg
:target: https://codecov.io/gh/diffpy/diffpy.pdfmorph
.. |Codecov| image:: https://codecov.io/gh/diffpy/diffpy.morph/branch/main/graph/badge.svg
:target: https://codecov.io/gh/diffpy/diffpy.morph

.. |Forge| image:: https://img.shields.io/conda/vn/conda-forge/diffpy.pdfmorph
:target: https://anaconda.org/conda-forge/diffpy.pdfmorph
.. |Forge| image:: https://img.shields.io/conda/vn/conda-forge/diffpy.morph
:target: https://anaconda.org/conda-forge/diffpy.morph

.. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff

.. |PyPi| image:: https://img.shields.io/pypi/v/diffpy.pdfmorph
:target: https://pypi.org/project/diffpy.pdfmorph/
.. |PyPi| image:: https://img.shields.io/pypi/v/diffpy.morph
:target: https://pypi.org/project/diffpy.morph/

.. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.pdfmorph
:target: https://pypi.org/project/diffpy.pdfmorph/
.. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.morph
:target: https://pypi.org/project/diffpy.morph/

.. |Tracking| image:: https://img.shields.io/badge/issue_tracking-github-blue
:target: https://github.com/diffpy/diffpy.pdfmorph/issues
:target: https://github.com/diffpy/diffpy.morph/issues

Tools for manipulating and comparing PDF profiles

PDFmorph is a Python software package designed to increase the insight
``diffpy.morph`` is a Python software package designed to increase the insight
researchers can obtain from measured atomic pair distribution functions
(PDFs) in a model-independent way. The program was designed to help a
researcher answer the question: "Has my material undergone a phase
Expand All @@ -44,42 +44,42 @@ One approach is to compare the two PDFs in a plot and view the difference
curve underneath. However, significant signal can be seen in the
difference curve from benign effects such as thermal expansion (peak
shifts) and increased thermal motion (peak broadening) or a change in
scale due to differences in incident flux, for example. PDFmorph will
scale due to differences in incident flux, for example. ``diffpy.morph`` will
do its best to correct for these benign effects before computing and
plotting the difference curve. One measured PDF (typically that collected
at higher temperature) is identified as the target PDF and the second
PDF is then morphed by "stretching" (changing the r-axis to simulate a
uniform lattice expansion), "smearing" (broadening peaks through a
uniform convolution to simulate increased thermal motion), and "scaling"
(self-explanatory). PDFmorph will vary the amplitude of the morphing
(self-explanatory). ``diffpy.morph`` will vary the amplitude of the morphing
transformations to obtain the best fit between the morphed and the target
PDFs, then plot them on top of each other with the difference plotted
below.

There are also a few other morphing transformations in the program.

Finally, we note that PDFmorph should work on other spectra that are not
Finally, we note that ``diffpy.morph`` should work on other spectra that are not
PDFs, though it has not been extensively tested beyond the PDF.


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

Citation
--------

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

diffpy.pdfmorph Package, https://github.com/diffpy/diffpy.pdfmorph
diffpy.morph Package, https://github.com/diffpy/diffpy.morph

REQUIREMENTS
------------------------------------------------------------------------

PDFmorph is currently run from the command line, which requires opening
``diffpy.morph`` is currently run from the command line, which requires opening
and typing into a terminal window or Windows command prompt. It is
recommended that you consult online resources and become somewhat
familiar before using PDFmorph.
familiar before using ``diffpy.morph``.

PDFmorph can be run with Python 3.10 or higher. It makes use of several third party
``diffpy.morph`` can be run with Python 3.10 or higher. It makes use of several third party
libraries that you'll need to run the app and its components.

* `NumPy` - library for scientific computing with Python
Expand All @@ -102,79 +102,79 @@ To add "conda-forge" to the conda channels, run the following in a terminal. ::
conda config --add channels conda-forge

We want to install our packages in a suitable conda environment.
The following creates and activates a new environment named ``diffpy.pdfmorph_env`` ::
The following creates and activates a new environment named ``diffpy.morph_env`` ::

conda create -n diffpy.pdfmorph_env diffpy.pdfmorph
conda activate diffpy.pdfmorph_env
conda create -n diffpy.morph_env diffpy.morph
conda activate diffpy.morph_env

To confirm that the installation was successful, type::

python -c "import diffpy.pdfmorph; print(diffpy.pdfmorph.__version__)"
python -c "import diffpy.morph; print(diffpy.morph.__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
`Python Package Index <https://pypi.python.org>`_.
To install using ``pip`` into your ``diffpy.pdfmorph_env`` environment, we will also have to install dependencies ::
To install using ``pip`` into your ``diffpy.morph_env`` environment, we will also have to install dependencies ::

pip install -r https://raw.githubusercontent.com/diffpy/diffpy.pdfmorph/main/requirements/pip.txt
pip install -r https://raw.githubusercontent.com/diffpy/diffpy.morph/main/requirements/pip.txt

and then install the package ::

pip install diffpy.pdfmorph
pip install diffpy.morph

If you prefer to install from sources, after installing the dependencies, obtain the source archive from
`GitHub <https://github.com/diffpy/diffpy.pdfmorph/>`_. Once installed, ``cd`` into your ``diffpy.pdfmorph`` directory
`GitHub <https://github.com/diffpy/diffpy.morph/>`_. Once installed, ``cd`` into your ``diffpy.morph`` directory
and run the following ::

pip install .

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

You may consult our `online documentation <https://diffpy.github.io/diffpy.pdfmorph>`_ for tutorials and API references.
You may consult our `online documentation <https://diffpy.github.io/diffpy.morph>`_ for tutorials and API references.

USING PDFmorph
------------------------------------------------------------------------
USING diffpy.morph
------------------

For detailed instructions and full tutorial, consult the user manual
on our `website <www.diffpy.org/diffpy.pdfmorph/>`.
on our `website <www.diffpy.org/diffpy.morph/>`.

Once the required software, including PDFmorph is all installed, open
Once the required software, including ``diffpy.morph`` is all installed, open
up a terminal and check installation has worked properly by running ::

source activate pdfmorph_env #if the environment isn't already active
pdfmorph -h #get some helpful information
pdfmorph --version
source activate diffpy.morph_env #if the environment isn't already active
diffpy.morph -h #get some helpful information
diffpy.morph --version

If installed correctly, this last command should return the version
of PDFmorph that you have installed on your system. To begin using
PDFmorph, run a command like ::
of ``diffpy.morph`` that you have installed on your system. To begin using
``diffpy.morph``, run a command like ::

pdfmorph <target PDF file> <morphed PDF file>
diffpy.morph <target PDF file> <morphed PDF file>

where both PDFs file are text files which contain PDF data, such as ``.gr``
or ``.cgr`` files that are produced by ``PDFgetX2``, ``PDFgetX3``,
or ``PDFgui``. Though some file extensions other than ``.gr`` or ``.cgr``,
but with the same content structure, have been shown to work with
PDFmorph, it is recommended to stick with ``.gr`` files.
``diffpy.morph``, it is recommended to stick with ``.gr`` files.

Enjoy!


Support and Contribute
----------------------

`Diffpy user group <https://groups.google.com/g/diffpy-users>`_ is the discussion forum for general questions and discussions about the use of diffpy.pdfmorph. Please join the diffpy.pdfmorph users community by joining the Google group. The diffpy.pdfmorph project welcomes your expertise and enthusiasm!
`Diffpy user group <https://groups.google.com/g/diffpy-users>`_ is the discussion forum for general questions and discussions about the use of diffpy.morph. Please join the diffpy.morph users community by joining the Google group. The diffpy.morph project welcomes your expertise and enthusiasm!

If you see a bug or want to request a feature, please `report it as an issue <https://github.com/diffpy/diffpy.pdfmorph/issues>`_ and/or `submit a fix as a PR <https://github.com/diffpy/diffpy.pdfmorph/pulls>`_. You can also post it to the `Diffpy user group <https://groups.google.com/g/diffpy-users>`_.
If you see a bug or want to request a feature, please `report it as an issue <https://github.com/diffpy/diffpy.morph/issues>`_ and/or `submit a fix as a PR <https://github.com/diffpy/diffpy.morph/pulls>`_. You can also post it to the `Diffpy user group <https://groups.google.com/g/diffpy-users>`_.

Feel free to fork the project and contribute. To install diffpy.pdfmorph
Feel free to fork the project and contribute. To install diffpy.morph
in a development mode, with its sources being directly used by Python
rather than copied to a package directory, use the following in the root
directory ::

pip install -e .
pip install -e .

To ensure code quality and to prevent accidental commits into the default branch, please set up the use of our pre-commit
hooks.
Expand All @@ -190,9 +190,9 @@ trying to commit again.

Improvements and fixes are always appreciated.

Before contributing, please read our `Code of Conduct <https://github.com/diffpy/diffpy.pdfmorph/blob/main/CODE_OF_CONDUCT.rst>`_.
Before contributing, please read our `Code of Conduct <https://github.com/diffpy/diffpy.morph/blob/main/CODE_OF_CONDUCT.rst>`_.

Contact
-------

For more information on diffpy.pdfmorph please visit the project `web-page <https://diffpy.github.io/>`_ or email Prof. Simon Billinge at sb2896@columbia.edu.
For more information on diffpy.morph please visit the project `web-page <https://diffpy.github.io/>`_ or email Prof. Simon Billinge at sb2896@columbia.edu.
Loading
Loading