diffpy.srfit


Namediffpy.srfit JSON
Version 3.1.0 PyPI version JSON
download
home_pageNone
SummaryConfigurable code for solving atomic structures.
upload_time2025-07-07 19:12:23
maintainerNone
docs_urlNone
authorNone
requires_python<3.14,>=3.11
licenseNone
keywords regression modelling fitting diffraction pdf
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            |Icon| |title|_
===============

.. |title| replace:: diffpy.srfit
.. _title: https://diffpy.github.io/diffpy.srfit

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

|PyPI| |Forge| |PythonVersion| |PR|

|CI| |Codecov| |Black| |Tracking|

.. |Black| image:: https://img.shields.io/badge/code_style-black-black
        :target: https://github.com/psf/black

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

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

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

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

.. |PyPI| image:: https://img.shields.io/pypi/v/diffpy.srfit
        :target: https://pypi.org/project/diffpy.srfit/

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

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

diffpy.srfit
============

Configurable code for solving atomic structures.

The diffpy.srfit package provides the framework for building a global optimizer
on the fly from components such as function calculators (that calculate
different data spectra), regression algorithms and structure models.  The
software is capable of co-refinement using multiple information sources or
models. It provides a uniform interface for various regression algorithms. The
target function being optimized can be specified by the user according to the
data available.

Within the diffpy.srfit framework, any parameter used in describing the
structure of a material can be passed as a refinable variable to the global
optimizer.  Once parameters are declared as variables they can easily be turned
"on" or "off", i.e. fixed or allowed to vary. Additionally, variables may be
constrained to obey mathematical relationships with other parameters or
variables used in the structural model. Restraints can be applied to
variables, which adds a penalty to the refinement process commensurate with the
deviation from the known value or range. The cost function can also be
customized by the user. If the refinement contains multiple models, each model
can have its own cost function which will be properly weighted and combined to
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.

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

Citation
--------

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


   P. Juhás, C. L. Farrow, X. Yang, K. R. Knox and S. J. L. Billinge,
   `Complex modeling: a strategy and software program for combining
   multiple information sources to solve ill posed structure and
   nanostructure inverse problems
   <http://dx.doi.org/10.1107/S2053273315014473>`__,
   *Acta Crystallogr. A* **71**, 562-568 (2015).

Installation
------------

The preferred method is to use `Miniconda Python
<https://docs.conda.io/projects/miniconda/en/latest/miniconda-install.html>`_
and install from the "conda-forge" channel of Conda packages.

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.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
as along with other packages for manipulating and computing crystal structures
and so on.  We also therefore recommend installing the following:

* ``diffpy.structure`` - crystal structure container and parsers,
  https://github.com/diffpy/diffpy.structure
* ``pyobjcryst`` - Crystal and Molecule storage, rigid units, bond
  length and bond angle restraints, https://github.com/diffpy/pyobjcryst

Optimizations involving pair distribution functions PDF or bond valence
sums require

* ``diffpy.srreal`` - python library for PDF calculation,
  https://github.com/diffpy/diffpy.srreal

Optimizations involving small angle scattering or shape characteristic
functions from the diffpy.srfit.sas module require

* ``sas`` - module for calculation of P(R) in small-angle scattering
  from the SasView project, http://www.sasview.org

Fallback Installation
---------------------

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.srfit_env`` environment, type ::

        pip install diffpy.srfit

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

        pip install .

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

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

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

If you see a bug or want to request a feature, please `report it as an issue <https://github.com/diffpy/diffpy.srfit/issues>`_ and/or `submit a fix as a PR <https://github.com/diffpy/diffpy.srfit/pulls>`_.

Feel free to fork the project and contribute. To install diffpy.srfit
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 .

To ensure code quality and to prevent accidental commits into the default branch, please set up the use of our pre-commit
hooks.

1. Install pre-commit in your working environment by running ``conda install pre-commit``.

2. Initialize pre-commit (one time only) ``pre-commit install``.

Thereafter your code will be linted by black and isort and checked against flake8 before you can commit.
If it fails by black or isort, just rerun and it should pass (black and isort will modify the files so should
pass after they are modified). If the flake8 test fails please see the error messages and fix them manually before
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>`_.

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.

Acknowledgements
----------------

``diffpy.srfit`` is built and maintained with `scikit-package <https://scikit-package.github.io/scikit-package/>`_.

The source code in *observable.py* was derived from the 1.0 version
of the Caltech "Pyre" project.

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "diffpy.srfit",
    "maintainer": null,
    "docs_url": null,
    "requires_python": "<3.14,>=3.11",
    "maintainer_email": "Simon Billinge <sb2896@columbia.edu>",
    "keywords": "regression, modelling, fitting, diffraction, PDF",
    "author": null,
    "author_email": "Simon Billinge <sb2896@columbia.edu>",
    "download_url": "https://files.pythonhosted.org/packages/65/7f/d507daba996e01b8f4099cf62e2b1ace61a85e53756720899ce24534091b/diffpy_srfit-3.1.0.tar.gz",
    "platform": null,
    "description": "|Icon| |title|_\n===============\n\n.. |title| replace:: diffpy.srfit\n.. _title: https://diffpy.github.io/diffpy.srfit\n\n.. |Icon| image:: https://avatars.githubusercontent.com/diffpy\n        :target: https://diffpy.github.io/diffpy.srfit\n        :height: 100px\n\n|PyPI| |Forge| |PythonVersion| |PR|\n\n|CI| |Codecov| |Black| |Tracking|\n\n.. |Black| image:: https://img.shields.io/badge/code_style-black-black\n        :target: https://github.com/psf/black\n\n.. |CI| image:: https://github.com/diffpy/diffpy.srfit/actions/workflows/matrix-and-codecov-on-merge-to-main.yml/badge.svg\n        :target: https://github.com/diffpy/diffpy.srfit/actions/workflows/matrix-and-codecov-on-merge-to-main.yml\n\n.. |Codecov| image:: https://codecov.io/gh/diffpy/diffpy.srfit/branch/main/graph/badge.svg\n        :target: https://codecov.io/gh/diffpy/diffpy.srfit\n\n.. |Forge| image:: https://img.shields.io/conda/vn/conda-forge/diffpy.srfit\n        :target: https://anaconda.org/conda-forge/diffpy.srfit\n\n.. |PR| image:: https://img.shields.io/badge/PR-Welcome-29ab47ff\n\n.. |PyPI| image:: https://img.shields.io/pypi/v/diffpy.srfit\n        :target: https://pypi.org/project/diffpy.srfit/\n\n.. |PythonVersion| image:: https://img.shields.io/pypi/pyversions/diffpy.srfit\n        :target: https://pypi.org/project/diffpy.srfit/\n\n.. |Tracking| image:: https://img.shields.io/badge/issue_tracking-github-blue\n        :target: https://github.com/diffpy/diffpy.srfit/issues\n\ndiffpy.srfit\n============\n\nConfigurable code for solving atomic structures.\n\nThe diffpy.srfit package provides the framework for building a global optimizer\non the fly from components such as function calculators (that calculate\ndifferent data spectra), regression algorithms and structure models.  The\nsoftware is capable of co-refinement using multiple information sources or\nmodels. It provides a uniform interface for various regression algorithms. The\ntarget function being optimized can be specified by the user according to the\ndata available.\n\nWithin the diffpy.srfit framework, any parameter used in describing the\nstructure of a material can be passed as a refinable variable to the global\noptimizer.  Once parameters are declared as variables they can easily be turned\n\"on\" or \"off\", i.e. fixed or allowed to vary. Additionally, variables may be\nconstrained to obey mathematical relationships with other parameters or\nvariables used in the structural model. Restraints can be applied to\nvariables, which adds a penalty to the refinement process commensurate with the\ndeviation from the known value or range. The cost function can also be\ncustomized by the user. If the refinement contains multiple models, each model\ncan have its own cost function which will be properly weighted and combined to\nobtain the total cost function. Additionally, diffpy.srfit is designed to be\nextensible, allowing the user to integrate external calculators to perform\nco-refinements with other techniques.\n\nFor more information about the diffpy.srfit library, please consult our `online documentation <https://diffpy.github.io/diffpy.srfit>`_.\n\nCitation\n--------\n\nIf you use diffpy.srfit in a scientific publication, we would like you to cite this package as\n\n\n   P. Juh\u00e1s, C. L. Farrow, X. Yang, K. R. Knox and S. J. L. Billinge,\n   `Complex modeling: a strategy and software program for combining\n   multiple information sources to solve ill posed structure and\n   nanostructure inverse problems\n   <http://dx.doi.org/10.1107/S2053273315014473>`__,\n   *Acta Crystallogr. A* **71**, 562-568 (2015).\n\nInstallation\n------------\n\nThe preferred method is to use `Miniconda Python\n<https://docs.conda.io/projects/miniconda/en/latest/miniconda-install.html>`_\nand install from the \"conda-forge\" channel of Conda packages.\n\nTo add \"conda-forge\" to the conda channels, run the following in a terminal. ::\n\n        conda config --add channels conda-forge\n\nWe want to install our packages in a suitable conda environment.\nThe following creates and activates a new environment named ``diffpy.srfit_env`` ::\n\n        conda create -n diffpy.srfit_env diffpy.srfit\n        conda activate diffpy.srfit_env\n\nTo confirm that the installation was successful, type ::\n\n        python -c \"import diffpy.srfit; print(diffpy.srfit.__version__)\"\n\nThe output should print the latest version displayed on the badges above.\n\nThis will install the minimal `diffpy.srfit` installation.  It will often be used\nas along with other packages for manipulating and computing crystal structures\nand so on.  We also therefore recommend installing the following:\n\n* ``diffpy.structure`` - crystal structure container and parsers,\n  https://github.com/diffpy/diffpy.structure\n* ``pyobjcryst`` - Crystal and Molecule storage, rigid units, bond\n  length and bond angle restraints, https://github.com/diffpy/pyobjcryst\n\nOptimizations involving pair distribution functions PDF or bond valence\nsums require\n\n* ``diffpy.srreal`` - python library for PDF calculation,\n  https://github.com/diffpy/diffpy.srreal\n\nOptimizations involving small angle scattering or shape characteristic\nfunctions from the diffpy.srfit.sas module require\n\n* ``sas`` - module for calculation of P(R) in small-angle scattering\n  from the SasView project, http://www.sasview.org\n\nFallback Installation\n---------------------\n\nIf the above does not work, you can use ``pip`` to download and install the latest release from\n`Python Package Index <https://pypi.python.org>`_.\nTo install using ``pip`` into your ``diffpy.srfit_env`` environment, type ::\n\n        pip install diffpy.srfit\n\nIf you prefer to install from sources, after installing the dependencies, obtain the source archive from\n`GitHub <https://github.com/diffpy/diffpy.srfit/>`_. Once installed, ``cd`` into your ``diffpy.srfit`` directory\nand run the following ::\n\n        pip install .\n\nGetting Started\n---------------\n\nYou may consult our `online documentation <https://diffpy.github.io/diffpy.srfit>`_ for tutorials and API references.\n\nSupport and Contribute\n----------------------\n\nIf you see a bug or want to request a feature, please `report it as an issue <https://github.com/diffpy/diffpy.srfit/issues>`_ and/or `submit a fix as a PR <https://github.com/diffpy/diffpy.srfit/pulls>`_.\n\nFeel free to fork the project and contribute. To install diffpy.srfit\nin a development mode, with its sources being directly used by Python\nrather than copied to a package directory, use the following in the root\ndirectory ::\n\n        pip install -e .\n\nTo ensure code quality and to prevent accidental commits into the default branch, please set up the use of our pre-commit\nhooks.\n\n1. Install pre-commit in your working environment by running ``conda install pre-commit``.\n\n2. Initialize pre-commit (one time only) ``pre-commit install``.\n\nThereafter your code will be linted by black and isort and checked against flake8 before you can commit.\nIf it fails by black or isort, just rerun and it should pass (black and isort will modify the files so should\npass after they are modified). If the flake8 test fails please see the error messages and fix them manually before\ntrying to commit again.\n\nImprovements and fixes are always appreciated.\n\nBefore contributing, please read our `Code of Conduct <https://github.com/diffpy/diffpy.srfit/blob/main/CODE_OF_CONDUCT.rst>`_.\n\nContact\n-------\n\nFor more information on diffpy.srfit please visit the project `web-page <https://diffpy.github.io/>`_ or email Simon Billinge at sb2896@columbia.edu.\n\nAcknowledgements\n----------------\n\n``diffpy.srfit`` is built and maintained with `scikit-package <https://scikit-package.github.io/scikit-package/>`_.\n\nThe source code in *observable.py* was derived from the 1.0 version\nof the Caltech \"Pyre\" project.\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "Configurable code for solving atomic structures.",
    "version": "3.1.0",
    "project_urls": {
        "Homepage": "https://github.com/diffpy/diffpy.srfit/",
        "Issues": "https://github.com/diffpy/diffpy.srfit/issues/"
    },
    "split_keywords": [
        "regression",
        " modelling",
        " fitting",
        " diffraction",
        " pdf"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "8c069babef08b8a116875b7651a3c92b45d48f5b2c045a0de28ab30857307d23",
                "md5": "1560c162ddb14a220a6244460f885dd2",
                "sha256": "22e6b89e284b8edb570ec2ed1e38e7be65a69273892358a934bfac5550fed2f8"
            },
            "downloads": -1,
            "filename": "diffpy_srfit-3.1.0-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "1560c162ddb14a220a6244460f885dd2",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": "<3.14,>=3.11",
            "size": 148689,
            "upload_time": "2025-07-07T19:12:22",
            "upload_time_iso_8601": "2025-07-07T19:12:22.296004Z",
            "url": "https://files.pythonhosted.org/packages/8c/06/9babef08b8a116875b7651a3c92b45d48f5b2c045a0de28ab30857307d23/diffpy_srfit-3.1.0-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "657fd507daba996e01b8f4099cf62e2b1ace61a85e53756720899ce24534091b",
                "md5": "90b658db292f4797684ab9de7a908144",
                "sha256": "cd1bae4e8dddc36ac5a69334678de3d25bcbd97b6cde76006a01067c27166a13"
            },
            "downloads": -1,
            "filename": "diffpy_srfit-3.1.0.tar.gz",
            "has_sig": false,
            "md5_digest": "90b658db292f4797684ab9de7a908144",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": "<3.14,>=3.11",
            "size": 388138,
            "upload_time": "2025-07-07T19:12:23",
            "upload_time_iso_8601": "2025-07-07T19:12:23.373950Z",
            "url": "https://files.pythonhosted.org/packages/65/7f/d507daba996e01b8f4099cf62e2b1ace61a85e53756720899ce24534091b/diffpy_srfit-3.1.0.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-07 19:12:23",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "diffpy",
    "github_project": "diffpy.srfit",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "lcname": "diffpy.srfit"
}
        
Elapsed time: 1.82336s