diff --git a/.gitignore b/.gitignore index 534d55e3..77a5c668 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,7 @@ _build *.bak *~ +.DS_Store #eclipse .project diff --git a/_templates/menu01.html b/_templates/menu01.html index 1a235d9b..ebcb477b 100644 --- a/_templates/menu01.html +++ b/_templates/menu01.html @@ -7,13 +7,14 @@ diff --git a/images/pdfmorph.png b/images/pdfmorph.png new file mode 100644 index 00000000..aad99dd4 Binary files /dev/null and b/images/pdfmorph.png differ diff --git a/images/pdfprimer.png b/images/pdfprimer.png new file mode 100644 index 00000000..0833dc73 Binary files /dev/null and b/images/pdfprimer.png differ diff --git a/index.rst b/index.rst index 6cb5fff6..e224f0d7 100644 --- a/index.rst +++ b/index.rst @@ -30,17 +30,14 @@ diffraction analysis and the study of the atomic structure of materials. .. include:: abbreviations.txt -DiffPy is the home of the |DiffPyCMI| -Complex Modeling framework, a modular software framework for robust and extensible -modeling of diffraction data. We welcome contributions to this project from the -community. -The project is currently centered at `Brookhaven National Laboratory`_, a US `Department of -Energy, Office of Basic Energy Sciences`_ funded laboratory. +The project is currently maintained by the Billinge Group and DiffPy community members. + Many parts of the code were developed under the diffraction part of the DANSE_ project, a software construction project funded by the `National Science Foundation`_ to provide -data analysis software tools for neutron scattering experiments. This project was previously -centered at Columbia University and, before that, Michigan State University. +data analysis software tools for neutron scattering experiments. The DiffPy project has +been a collaborative effort, centered in many institutions, including Brookhaven National +Laboratory, Columbia University, and Michigan State University. @@ -53,17 +50,30 @@ centered at Columbia University and, before that, Michigan State University. .. _brookhaven national laboratory: https://www.bnl.gov/ -.. image:: images/blank1x1.png - :align: left - :height: 10 - -.. figure:: logos/BNL_logo.jpg - :align: left - :target: `Brookhaven National Laboratory`_ +About DiffPy +---------------- -.. figure:: logos/DOE_logo.png +.. image:: images/pdfprimer.png :align: right - :target: `Department of Energy, Office of Basic Energy Sciences`_ + :width: 200 + + +DiffPy is the home of a number of software products for atomic structure +analysis. A large portion of the DiffPy project consists of tools for atomic pair +distribution function (PDF) analysis. For detailed instructions +and in-depth examples of modeling Pair Distribution Function data, we highly recommend the book, + + +*Atomic Pair Distribution Function Analysis: A Primer* by Simon J. L. Billinge and Kirsten M. Ø. Jensen (Oxford University Press, 2023). + + +To purchase this book, please visit `this link `_. + +The DiffPy project is also home to many other software tools for analysis of scientific data. +One of which is diffpy.cmi, a general-purpose +complex modeling infrastructure for analysis of *any* type of data. +For more information about diffpy.cmi, please visit the +`diffpy.cmi documentation `_. .. toctree:: :hidden: @@ -86,3 +96,4 @@ centered at Columbia University and, before that, Michigan State University. products/SrMise products/mPDF products/xinterpdf + products/utils \ No newline at end of file diff --git a/products/diffpycmi/cmi_exchange.rst b/products/diffpycmi/cmi_exchange.rst deleted file mode 100644 index ae136dda..00000000 --- a/products/diffpycmi/cmi_exchange.rst +++ /dev/null @@ -1,76 +0,0 @@ -CMI Exchange -============= - -The `CMI Exchange`_ is a collection of community developed scripts, -functions, and IPython plugins that make use of the |diffpycmi| -framework. If you are new to |diffpycmi| it is a great place to get -started. If you've been working with |diffpycmi| for a while and feel -that others would benefit from seeing your code please contribute! - -.. _cmi exchange: https://github.com/diffpy/cmi_exchange#cmi-exchange - -.. _new_users: - -For New Users -------------- - -Begin by visiting the `CMI Exchange on github -`_. As with all -github projects you will see the following two buttons in the sidebar -allowing you to clone the project in your desktop or download a zip -file: - -.. image:: ../../images/github_screenshot.png - -For now simply follow the download zip link to get the entire project -and unpack the zip file to a convenient location on your machine. If -you have correctly installed the |DiffPyCMI| package you -can start running the scripts right away. Just follow the instructions -in `New User Tips -`_. - -You'll notice that there are two directories: ``cmi_plugins`` and -``cmi_scripts``. The scripts are standalone python scripts that can be -run directly from the `IPython`_ command line, whereas the plugins are a -set of functions and `IPython extensions`_ -that provide additional functionality to your IPython session. - -Scripts -^^^^^^^ - -To run a script, simply navigate to the directory containing the .py -file and type:: - - $ ipython --pylab - In [1]: %run script_name.py - -Extensions -^^^^^^^^^^ - -`IPython extensions`_ are importable IPython modules that can modifpy -the behavior of the shell to add functionality. They are installed and -activated from the IPython command line by running:: - - In [1]: %install_ext name_of_extension.py - In [2]: %load_ext name_of_extenstion - - -.. _ipython: http://ipython.org/ - -.. _ipython extensions: http://ipython.org/ipython-doc/rel-0.12.1/config/extensions/index.html - - -.. _contribute_scripts: - -Contribute Scripts ------------------- - -To contribute your own script to the CMI Exchange you must first fork -the project on github. Once you've added your own code you can issue a -pull request. - -If you're new to git and don't know what it means to fork a project -`begin here `_. - - -.. include:: ../../abbreviations.txt diff --git a/products/diffpycmi/contents.rst b/products/diffpycmi/contents.rst deleted file mode 100644 index 83edf944..00000000 --- a/products/diffpycmi/contents.rst +++ /dev/null @@ -1,92 +0,0 @@ -.. _contents: - -|diffpycmi| Contents -=================== - -The |diffpycmi| release includes Python and C++ libraries developed by -the DiffPy team as well as external libraries necessary for functionality. - -Libraries developed by the DiffPy team --------------------------------------- - -.. list-table:: - :widths: 10, 5, 30 - :header-rows: 1 - - * - Library - - - - Description - - * - `diffpy.srfit`_ - - |doc-diffpy.srfit|_ - - Setup and control of general fitting problems. - - * - `diffpy.srreal`_ - - |doc-diffpy.srreal|_ - - Python library for calculation of pair based quantities such as - the pair distribution function (PDF), bond lengths, and bond - valence sums. - - * - `diffpy.structure`_ - - |doc-diffpy.structure|_ - - Light-weigth storage of crystal structure data. - - * - `diffpy.utils`_ - - |doc-diffpy.utils|_ - - General purpose utilities for the diffpy libraries. - - * - `pyobjcryst`_ - - |doc-pyobjcryst|_ - - Python bindings to the ObjCryst++ crystallographic library. - - * - `libdiffpy`_ - - |doc-libdiffpy|_ - - C++ library for calculation of PDF and other real-space - quantities. - - - -External libraries ------------------- - -.. list-table:: - :widths: 10, 5, 30 - :header-rows: 1 - - * - Library - - - - Description - - * - srfit-sasview_ - - `doc `__ - - Selected modules from SasView_, the Small - Angle Scattering Analysis Software Package. - - * - `periodictable`_ - - `doc `__ - - Extensible periodic table of the elements with support for mass, - density, and X-ray/neutron scattering information. - - * - `libobjcryst`_ - - `doc `__ - - ObjCryst++, crystallographic library for C++ re-packaged for - installation as a shared library. - - * - `cxxtest`_ - - `doc `__ - - Testing framework for C++. - -.. URL definitions below ----------------------------------------------- - -.. |doc-diffpy.srfit| replace:: doc -.. |doc-diffpy.srreal| replace:: doc -.. |doc-diffpy.structure| replace:: doc -.. |doc-diffpy.utils| replace:: doc -.. |doc-pyobjcryst| replace:: doc -.. |doc-libdiffpy| replace:: doc - -.. _cxxtest: http://cxxtest.com/ -.. _periodictable: http://www.reflectometry.org/danse/elements.html -.. _SasView: https://www.sasview.org - -.. include:: ../../abbreviations.txt diff --git a/products/diffpycmi/contributecode.rst b/products/diffpycmi/contributecode.rst deleted file mode 100644 index 4f9adbc8..00000000 --- a/products/diffpycmi/contributecode.rst +++ /dev/null @@ -1,37 +0,0 @@ -How to Contribute Code -====================== - -The |diffpycmi| bundle consists of the following projects, all hosted on -github. To contribute code simply fork the project you'd like to work -on and issue a pull request. - -====================== ============================================ -Module Description -====================== ============================================ -`diffpy.srfit`_ Setup and control of general fitting - problems. - -`diffpy.srreal`_ Python library for calculation of pair based - quantities such as the pair distribution - function (PDF), bond lengths, and bond - valence sums. - -`diffpy.structure`_ Handles storage of crystal structure data. - -`diffpy.utils`_ General purpose shared utilities for the - diffpy libraries. - -`pyobjcryst`_ Python bindings to the ObjCryst++ - Object-Oriented Crystallographic - Library. - -`libdiffpy`_ C++ library for calculation of PDF and - other real-space quantities. - -`libobjcryst`_ ObjCryst++ re-packaged for installation - as a shared library -====================== ============================================ - -.. URL definitions below ----------------------------------------------- - -.. include:: ../../abbreviations.txt diff --git a/products/diffpycmi/index.rst b/products/diffpycmi/index.rst index b77daa4e..b4385abd 100644 --- a/products/diffpycmi/index.rst +++ b/products/diffpycmi/index.rst @@ -23,191 +23,52 @@ community. Installation ============ -To install ``diffpy.cmi``, create a new conda environment or activate an existing environment and install the package from the conda-forge channel. - -.. code-block:: bash - - conda create -n diffpy.cmi-env - conda install -c conda-forge diffpy.cmi - conda activate diffpy.cmi-env - -To confirm that the installation was successful, type - -.. code-block:: bash - - cmi --version - -The output should print the latest version. - -If the above does not work, you can use ``pip`` to download and install the latest release from -`Python Package Index `_. -To install using ``pip`` into your ``diffpy.cmi_env`` environment, type - -.. code-block:: bash - - pip install diffpy.cmi +For the most up-to-date installation instructions, please refer to the installation section of the +`diffpy.cmi README page on GitHub `_. Pack and Profile Installation ------------------------------ - -Use the `cmi` command-line interface to install and manage modular optional dependencies, known as `packs`, -and to configure or execute user-defined workflows that combine multiple packs with optional post-installation steps, -known as `profiles`. To use `cmi`, you can run the following example commands: - -Show available commands and options with, - -.. code-block:: bash - - cmi -h - -List installed and available packs and profiles, - -.. code-block:: bash - - cmi pack list - cmi profile list - -Show details of a specific pack or profile, - -.. code-block:: bash - - cmi pack show - cmi profile show - -Install a pack or profile (by name or path), - -.. code-block:: bash - - cmi install - cmi install - cmi install - -.. admonition:: Example installation - - For example, to install the pack for PDF modeling, type, - - .. code-block:: bash - - cmi install pdf - - To check to see if the pack was installed, type, - - .. code-block:: bash +============================= - cmi pack list +Diffpy.cmi is designed to be modular and extensible through the use of optional +dependencies known as `packs`. Additionally, users can define custom workflows +that combine multiple packs with optional post-installation steps, known as `profiles`. - The output should look something like this, +For more information on packs and profiles please refer to the +`diffpy.cmi overview page `_. - .. code-block:: bash - - Installed: - - core - - pdf - Available to install: - - plotting - - tests - - docs - - -Download examples ------------------ - -To list and copy example scripts and data to your working directory, type, - -.. code-block:: bash - - cmi example list - cmi example copy / - -.. admonition:: Example - - For example, to see the example scripts for PDF fitting, type, - - .. code-block:: bash - - cmi example list - - The output should look something like this, - - .. code-block:: bash - - $ cmi example list - core: - - linefit - pdf: - - ch03NiModelling - - ch05Fit2Phase - - ch06RefineCrystalStructureGen - - ch07StructuralPhaseTransitions - - ch08NPRefinement - - ch11ClusterXYZ - - To copy the example for bulk Ni PDF fitting, type, - - .. code-block:: bash - - cmi example copy pdf/ch03NiModelling - - This will copy the example directory ``ch03NiModelling`` to your current working directory. Within this directory exists - the scripts and data to fit the bulk Ni PDF. - - You can then run the fitting script with, - - .. code-block:: bash - - python ch03NiModelling/solutions/diffpy-cmi/fitBulkNi.py - -What next? -========== - -* `Explore CMI exchange - `__, - our collection of example scripts and tutorials - -* :doc:`Get tips on using the CMI exchange ` - -* :doc:`Contribute code ` +For information how to install packs and profiles, please refer to the +`diffpy.cmi command-line interface page `_. Tutorials ========= -* A step-by-step tutorial on using diffpy.cmi for PDF analysis is available at the documentation site for - ``diffpy.cmi`` -- https://www.diffpy.org/diffpy.cmi/tutorials/index.html. +Many examples exist for diffpy.cmi. Using the command-line interface (CLI), these +examples can be copied directly to your computer. +For information on how to use the command-line interface to access the examples, +please refer to the +`diffpy.cmi CLI documentation `_. +Additionally, here are some direct links to other tutorials and examples, + +* A step-by-step tutorial on using diffpy.cmi to `fit a nickel PDF `_. * Worked examples and experimental data from the book *Atomic Pair Distribution Function Analysis: A Primer* are freely available at our `GitHub repository `_. -* ADD2019 school and conference -- +* Worked examples from ADD2019 school and conference -- https://github.com/diffpy/add2019-diffpy-cmi. Documentation ============= -Documentation for packages developed by the DiffPy team is available -at the links below. - -* |doc-diffpy.srfit|_ -- configuration and control of data-fitting problems -* |doc-diffpy.srreal|_ -- calculators for pair distribution function, bond - valence sums, etc. -* |doc-diffpy.structure|_ -- light-weight representation of crystal - structures -* |doc-pyobjcryst|_ -- Python interface to ObjCryst++ crystallographic - library -* |doc-diffpy.utils|_ -- general purpose utilities for the diffpy libraries -* |doc-libdiffpy|_ -- C++ library for calculation of PDF and other real-space - quantities - -See :ref:`diffpy.cmi contents ` for a complete list -of open-source libraries that are included in |diffpycmi| and -their respective project pages. +Documentation for diffpy.cmi is available at https://www.diffpy.org/diffpy.cmi. Reference ========= If you use this software in a research work which leads to publication, -we ask you to acknowledge the use of |diffpycmi| by citing the following +we ask you to acknowledge the use of diffpy.cmi by citing the following paper: * |citeJuhasAca15| diff --git a/products/diffpycmi/install.rst b/products/diffpycmi/install.rst deleted file mode 100644 index 6d6fd104..00000000 --- a/products/diffpycmi/install.rst +++ /dev/null @@ -1,188 +0,0 @@ -.. highlight:: bash - -|diffpycmi| installation from sources -==================================== - -Downloaded the most recent `diffpy.cmi tarball -`__ -and follow the steps below. - -1 Install system software ------------------------------------------------------------------------- - -|diffpycmi| requires the :ref:`system software dependencies ` -which can be installed from command line using a suitable package manager. -Here are installation commands for several supported systems. - -Ubuntu -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -For Ubuntu or other Debian-based Linux distributions use ``apt-get``:: - - sudo apt-get install \ - libgsl0-dev libboost-all-dev python-dev \ - python-setuptools python-numpy python-scipy \ - python-matplotlib python-lxml ipython \ - build-essential scons git zsh - -Fedora -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -Use ``yum`` for Fedora or RedHat Linux:: - - sudo yum install \ - gsl-devel boost-devel python-devel \ - python-setuptools numpy scipy \ - python-matplotlib python-lxml \ - python-ipython-notebook \ - gcc-c++ scons git zsh - -Mac OS X -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -For Mac OS X the system dependencies can be installed using the -`MacPorts `_ software manager. A similar -package system `Homebrew `_ works as well, but has -been considerably less tested with |diffpycmi|. - -For best results with MacPorts follow these tips: - -* We recommend to upgrade to the `latest version of OS X - `_. -* Install `Xcode `_. - If already present, we recommend to upgrade to the latest version. -* Be patient, it may take several hours to install all the dependencies - using MacPorts. -* Installation command may fail on the first run, but usually works - when repeated. See MacPorts - `FAQ `_ - for more help. - -To install system dependencies with MacPorts, use:: - - sudo port install \ - python27 py27-setuptools py27-ipython py27-lxml \ - gsl boost py27-numpy py27-scipy py27-matplotlib scons git - -Make sure the MacPorts versions of IPython and Python are active by -running the following commands:: - - sudo port select --set ipython ipython27 - sudo port select --set python python27 - - -**Important:** When finished installing the Mac OS X dependencies, adjust -the shell environment so that MacPorts Python is the first in the -PATH. This can be accomplished by adding the following line to either -of ``.profile`` or ``.zshenv`` file in your HOME directory :: - - export PATH="/opt/local/bin:$PATH" - - -2 Install |diffpycmi| ------------------------------------------------------------------------- - -Unzip the |diffpycmi| tarball into a directory of your choice. -Execute the included :file:`install` script and follow the prompts. :: - - # replace VERSION to match the actual filename - tar xzf diffpy_cmi-VERSION.tar.gz - cd diffpy_cmi-VERSION - ./install - -The install process may take a while and produce a plentiful output, -but should work if all required software is in place. - - -3 Test ------------------------------------------------------------------------- - -Execute the included test script, which should report no warnings -nor errors:: - - ./runtests.sh - -If there are failures they are most likely due to missing software or -incorrect versions of Python or other libraries being used together. -After addressing these issues it may be necessary to recompile the -sources by running ``./install --build``. - - -Remarks ------------------------------------------------------------------------- - -The expanded diffpy_cmi directory can be renamed or moved -to a different location and the software should still work. -The only requirement is to update the :file:`diffpy_cmi.pth` -symbolic link so it points to the new location. This can be -done by running the ``./install`` script again or by following -the steps below. - -The Python interpreter must have a symbolic link pointing to the -:file:`diffpy_cmi.pth` file in one of the directories where it -looks for :file:`.pth` files. This is normally set up by the -install script. If that process somehow fails, the preferred -:file:`pth` directory for a single-user installation can be -found using :: - - python -c 'import site; print site.USER_SITE' - -For a system-wide installation the standard :file:`pth` locations are :: - - python -c 'import site; print site.getsitepackages()' - -Once the :file:`pth` directory has been established, navigate to -the base diffpy_cmi directory and create the symbolic link with :: - - ln -si $PWD/diffpy_cmi.pth /path/to/the/pth/directory/ - -.. note:: - - It is essential to use a symbolic link. Making a copy of the - :file:`diffpy_cmi.pth` file will not work. - -.. note:: - - The installation of |diffpycmi| is entirely contained under the - expanded diffpy_cmi directory. The software can be completely - uninstalled by deleting that directory and removing the symbolic - link. - -Contacts ------------------------------------------------------------------------- - -If you need help with installing this software, please check discussions -or post your question to the -`diffpy-dev `_ -group. - ----- - -.. _dependencies: - -List of software dependencies -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -* **gsl** - GNU Scientific Library is collection of routines for numerical analysis. - -* **boost** - a set of useful C++ libraries. - -* **python-dev** - development tools for Python modules. - -* **python-setuptools** - enhancements to the Python distutils. - -* **numpy** - general-purpose array-processing for large multi-dimensional arrays in Python. - -* **scipy** - the fundamental library for scientific computing with Python. - -* **matplotlib** - a Python 2D plotting library. - -* **python-lxml** - a Python library for processing XML. - -* **ipython** - an enhanced interactive Python shell. - -* **scons** - a software build tool. - -* **git** - a version control system. - -* **zsh** - an interactive shell and powerful scripting language. diff --git a/products/labpdfproc.rst b/products/labpdfproc.rst new file mode 100644 index 00000000..d036edbd --- /dev/null +++ b/products/labpdfproc.rst @@ -0,0 +1,44 @@ +###################### +diffpy.labpdfproc +###################### + + +Tools for processing x-ray powder diffraction data from laboratory +sources. + +PDFgetX3 has revolutionized how pair distribution function (PDF) methods +can be applied to solve +nanostructure problems. However, the program was designed for use with +Rapid Acquisition PDF (RAPDF) data from synchrotron sources. A key +approximation inherent in the use of PDFgetX3 for RAPDF data is that +absorption effects are negligible. This is typically not the case for +laboratory x-ray diffractometers, where absorption effects can be +significant. + +This app is designed to preprocess data from laboratory x-ray +diffractometers before using PDFgetX3 to obtain PDFs. The app currently +carries out an absorption correction assuming a parallel beam capillary +geometry which is the most common geometry for lab PDF measurements. + +Installation +============ + +For the most up-to-date installation instructions, please refer to the installation section of the +`diffpy.labpdfproc README page on GitHub `_. + +Running labpdfproc +====================== + +To run diffpy.labpdfproc after installation, type the command:: + + labpdfproc + +Tutorials +========= +Tutorials on how to use diffpy.labpdfproc can be found +at the `diffpy.labpdfproc documentation `_. + +Documentation +============= + +Documentation for diffpy.labpdfproc is available at https://www.diffpy.org/diffpy.labpdfproc. \ No newline at end of file diff --git a/products/mPDF.rst b/products/mPDF.rst index 810e8b5a..16b571a8 100644 --- a/products/mPDF.rst +++ b/products/mPDF.rst @@ -1,6 +1,6 @@ -########## -mpdf -########## +############# +diffpy.mpdf +############# .. include:: ../abbreviations.txt @@ -20,85 +20,33 @@ as lists of spin positions and spin vectors provided by the user. .. figure:: ../images/mpdf_screenshot.png :align: center -This is an early release of mpdf, and the capabilities and documentation of the -project will evolve. The DiffPy team encourages investigators to provide feedback, -suggestions, and feature requests. + Example usage of diffpy.mpdf -Getting Started -================= +Reference +========= -The diffpy.mpdf package requires Python 2.6 or 2.7 and the following software: +If you use diffpy.mpdf in scientific research, please acknowledge it by citing: -* ``NumPy`` - numerical mathematics and fast array operations for Python -* ``SciPy`` - scientific libraries for Python -* ``matplotlib`` - python plotting library -* ``diffpy.structure`` - diffpy package for generating atomic structure -* ``diffpy.srreal`` - diffpy package for calculating real-space quantities + B. Frandsen, `diffpy.mpdf: a Python package for magnetic pair distribution function analysis + `_, GitHub repository. -See the :doc:`mpdf license ` for terms and conditions of use. Installation ------------- - -The recommended way to install this package is through conda. For help installing conda, -please visit |anaconda-download|. -Once conda is installed, you can follow the simple steps below to install diffpy.mpdf. -You will also install the full |diffpycmi| suite along the way. - -*Step 1: Add the appropriate conda channels to your conda configuration.* :: - - conda config --add channels diffpy - conda config --add channels benfrandsen - -These commands tell conda to look through these channels on the Anaconda cloud server to -find the appropriate software. - -*Step 2 (recommended): Create and activate a conda environment for diffpy + diffpy.mpdf.* :: - - conda create --name diffpy python=2.7 - source activate diffpy - -Note that you can name the environment anything you choose by passing it a different name -after the --name flag in the first command. - -*Step 3: Install diffpy.mpdf.* :: - - conda install diffpy.mpdf - -Note that this will also install the full |diffpycmi| suite if it has not already been -installed in this environment. - -*Alternative option: Install from the python package index.* - -If you prefer to use the python package index and have pip installed, please install the -prerequisite software and then use the command :: - - pip install diffpy.mpdf - -*Alternative option: Download and install from source.* +============ -If you prefer to install from source, you can also zip and download the entire package -from `PyPI `__ or -`GitHub `__, then unzip the file and -execute the following command from inside the unzipped directory :: +For the most up-to-date installation instructions, please refer to the +`diffpy.mpdf README on GitHub `_. - python setup.py install +Tutorials +========= -Note that this will only work if all the dependencies are already properly installed. +For tutorials on how to use diffpy.mpdf, please visit: https://github.com/FrandsenGroup/mPDF-tutorial. Documentation -------------- -Please see https://pythonhosted.org/diffpy.mpdf -for the documentation. - -What next? -============ +============= -Explore the mpdf tutorial and examples on the -`CMI Exchange `_! +Full documentation for diffpy.mpdf is available at: +`https://frandsengroup.github.io/diffpy.mpdf/index.html `_ -.. toctree:: - :hidden: - mPDFlicense diff --git a/products/morph.rst b/products/morph.rst new file mode 100644 index 00000000..df51a446 --- /dev/null +++ b/products/morph.rst @@ -0,0 +1,52 @@ +############ +diffpy.morph +############ + +Diffpy.morph is a Python software package designed to allow researchers +the ability to compare experimental datasets to identify structural changes. + +Diffpy.morph makes use of several data manipulation techniques to correct +for benign effects such as thermal expansion (peak shift) and increased +thermal motion (peak broadening) or a change in 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 a difference +curve. + +One dataset is identified as the "target" and the second is "morphed" +by "stretching" (changing the x-axis to simulate a uniform +expansion), "smearing" (broadening peaks through a uniform convolution), +and "scaling" (self-explanatory). diffpy.morph will vary +amplitude of morphing transformations to obtain the best fit between +morphed and target datasets, then plot them along with the difference curve +plotted below. + +There are also a few other morphing transformations in the program. + +Note that diffpy.morph should work on other spectra, not just pair distribution functions (PDFs). + +.. diffpy.morph will soon be included in :doc:`xPDFsuite `, a powerful end-to-end software for X-ray PDF analysis. xPDFsuite is designed for flexible, high throughput PDF analyses and contains many features for interrogating, comparing, and modeling data as well as simply doing data reduction. + +.. figure:: ../images/pdfmorph.png + :align: center + + diffpy.morph transformation techniques (scale, smear, and stretch) + applied sequentially to a PDF from NaCl sample + + +Installation +============ + +For the most up-to-date installation instructions, please refer to the installation section of the +`diffpy.morph README page on GitHub `_. + +Tutorials +========= + +Tutorials on how to use diffpy.morph can be found +at the `diffpy.morph documentation `_. + + +Documentation +============= + +Documentation for diffpy.morph is available at https://www.diffpy.org/diffpy.morph. diff --git a/products/pdfgui.rst b/products/pdfgui.rst index 71659e01..65f5ab22 100644 --- a/products/pdfgui.rst +++ b/products/pdfgui.rst @@ -1,14 +1,12 @@ .. highlight:: bash .. include:: ../abbreviations.txt -###### -PDFgui -###### +############# +diffpy.pdfgui +############# -Overview -======== -For users who do not have the expertise or necessity for command line analysis, PDFgui is +For users who do not have the expertise or necessity for command line analysis, diffpy.pdfgui is a convenient and easy to use graphical front end for the PDFfit2 refinement program. It is capable of full-profile fitting of the atomic pair distribution function (PDF) derived from x-ray or neutron diffraction data @@ -35,115 +33,37 @@ in your publication: Installation ============ +For the most up-to-date installation instructions, please refer to the installation section of the +`diffpy.pdfgui README page on GitHub `_. -By downloading and using this software you are agreeing to the -conditions specified in the `software license `__. - -PDFgui is distributed as a software package for -`Anaconda Python `__. PDFgui is available -for all operating systems supported by Anaconda, namely for -Linux, Mac OS X, and Windows. - -As a prerequisite for PDFgui installation, download and install -**Miniconda** (https://docs.conda.io/en/latest/miniconda.html#latest-miniconda-installer-links) -or Anaconda Python (https://www.anaconda.com/download). - -PDFgui is available from the "conda-forge" channel of Anaconda packages. - -There are currently two different sets of instructions to install it depending on your platform. -If you want to install it on Windows, Linux, or a non-arm64 Mac OSX (i.e., if at the time of writing -your Mac does not have an M1 or M2 chip) use the first set, otherwise the second set of instructions - -Windows, macOS (non-Arm64), Linux -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - -Add the "conda-forge" channel by running the following command in a terminal: :: - - conda config --add channels conda-forge - -Create a new environment named ``diffpy.pdfgui_env`` (or any name of your choice) and -install ``diffpy.pdfgui``: :: - - conda create -n diffpy.pdfgui_env diffpy.pdfgui - -Activate the environment: :: - - conda activate diffpy.pdfgui_env - -Confirm that the installation was successful: :: - - python -c "import diffpy.pdfgui; print(diffpy.pdfgui.__version__)" - -macOS (Arm64) -~~~~~~~~~~~~~ - -Create a new conda environment ``diffpy.pdfgui_env``: :: - - conda config --add channels conda-forge - conda create -n diffpy.pdfgui_env python=3.13 - -Activate the environment: :: - - conda activate diffpy.pdfgui_env - -It is necessary to get versions of pdffit2 built for Mac from Python package index (Pypi). First we will install all -the dependencies from conda-forge and then the pdffit2 itself from Pypi using the following commands: :: - - conda install wxpython diffpy.utils matplotlib-base pycifrw - pip install diffpy.pdffit2 - -Finally, we want to install PDFgui, again from conda-forge: :: - - pip install diffpy.pdfgui - - - -Running pdfgui: +Running pdfgui =============== -.. note:: - To start PDFgui from a Terminal make sure *pdfgui_env* is - the active Anaconda environment:: - - conda activate pdfgui_env - - Alternatively, on bash terminals you can add the following line to your shell startup - file :file:`.bashrc` to define an alias which will work in - any Anaconda environment :: - - alias pdfgui="/path/to/pdfgui_env/bin/pdfgui" +To run diffpy.pdfgui after installation, type the command:: - where ``/path/to`` needs to be adjusted according to the output of - ``which pdfgui`` command. + pdfgui -Please consider joining the `diffpy-users `__ Google group. -News about updates and new releases will be made there, as well as it being a place to ask questions -and find answers about using all diffpy programs. -When you sign up, -please leave a short message about why you are requesting to join as we have had spam accounts requesting access -and so we want to know you are a legitimate user. - - -Documentation and help -====================== +Tutorials +========= -* The user manual is available in `HTML <../doc/pdfgui/index.html>`__ - and `PDF <../doc/pdfgui/pdfgui.pdf>`__ formats. +Search "PDFgui" on YouTube for some video tutorials on how to use diffpy.pdfgui. -* Search "PDFgui" on YouTube for some video tutorials on how to use - PDFgui. +For in-depth help in using diffpy.pdfgui to solve scientific problems please +see the book "Atomic Pair Distribution Function Analysis: A primer" by +Simon Billinge, Kirsten Jensen, and past and present Billinge group members, +published by Oxford University Press. Data for the worked examples can +be found here: https://github.com/Billingegroup/pdfttp_data. -* For in-depth help in using PDFgui to solve scientific problems please - see the book "Atomic Pair Distribution Function Analysis: A primer" by - Simon Billinge, Kirsten Jensen, and past and present Billinge group members, - published by Oxford University Press. Data for the worked examples can - be found here: https://github.com/Billingegroup/pdfttp_data +Tutorial files are available from `pdfgui-tutorial.zip <../doc/pdfgui/pdfgui-tutorial.zip>`__. -* Tutorial files are available from - `pdfgui-tutorial.zip <../doc/pdfgui/pdfgui-tutorial.zip>`__. +Please, join the :doc:`community forum <../community>` for tips, tricks, and feedback. -* Please, join the :doc:`community forum <../community>` for tips, tricks, and feedback. +Documentation +============= +Documentation for diffpy.pdfgui is available at https://www.diffpy.org/diffpy.pdfgui. +Additionally, a user manual is available in `HTML <../doc/pdfgui/index.html>`__ +and `PDF <../doc/pdfgui/pdfgui.pdf>`__ formats. Legacy versions =============== diff --git a/products/pythonpackages.rst b/products/pythonpackages.rst index c847820b..4ae79236 100644 --- a/products/pythonpackages.rst +++ b/products/pythonpackages.rst @@ -3,45 +3,30 @@ Python Packages This is a complete list of all Python packages developed by the DiffPy team. For more information about a specific package, follow the link to -the corresponding github page. With the exception of PDFfit2, SrMise, -and mPDF, all of the packages listed below are bundled in the |DiffPyCMI| -release. - -====================== ============================================ -Module Description -====================== ============================================ -`diffpy.srfit`_ Setup and control of general fitting - problems. - -`diffpy.srmise`_ Python tool for peak extraction and peak - fitting of atomic pair distribution - functions. - -`diffpy.srreal`_ Python library for calculation of pair based - quantities such as the pair distribution - function (PDF), bond lengths, and bond - valence sums. - -`diffpy.structure`_ Handles storage of crystal structure data. - -`diffpy.utils`_ General purpose shared utilities for the - diffpy libraries. - -`pyobjcryst`_ Python bindings to the ObjCryst++ - Object-Oriented Crystallographic - Library. - -`diffpy.pdffit2`_ Atomic structure refinement and PDF fitting - (this is the computational engine used by - PDFgui). - -`diffpy.mpdf`_ Tools for calculating and refining magnetic - PDFs. -====================== ============================================ - -.. URL definitions below ----------------------------------------------- - -.. _diffpy.srmise: https://github.com/diffpy/diffpy.srmise -.. _diffpy.pdffit2: https://github.com/diffpy/diffpy.pdffit2 +the corresponding documentation page. + +.. list-table:: + :widths: 2 8 + :header-rows: 1 + :class: wrap-text + + * - Module + - Description + * - `diffpy.srfit `_ + - Setup and control of general fitting problems. + * - `diffpy.srmise `_ + - Python tool for peak extraction and peak fitting of atomic pair distribution functions. + * - `diffpy.srreal `_ + - Python library for calculation of pair-based quantities such as the pair distribution function (PDF), bond lengths, and bond valence sums. + * - `diffpy.structure `_ + - Handles storage of crystal structure data. + * - `diffpy.utils `_ + - General purpose shared utilities for the diffpy libraries. + * - `pyobjcryst `_ + - Python bindings to the ObjCryst++ Object-Oriented Crystallographic Library. + * - `diffpy.pdffit2 `_ + - Atomic structure refinement and PDF fitting (this is the computational engine used by PDFgui). + * - `diffpy.mpdf `_ + - Tools for calculating and refining magnetic PDFs. .. include:: ../abbreviations.txt diff --git a/products/utils.rst b/products/utils.rst index b8b90330..069bb83f 100644 --- a/products/utils.rst +++ b/products/utils.rst @@ -1,6 +1,6 @@ -########## -Utils -########## +############ +diffpy.utils +############ .. include:: ../abbreviations.txt @@ -14,11 +14,6 @@ tools for better capture and propagation of metadata, diffraction-friendly interpolation routines, as well as some other tools used across diffpy libraries. - -.. figure:: ../images/srmise_screenshot.png - :align: center - - Citation -------- @@ -117,8 +112,8 @@ For more information on diffpy.utils please visit the project `web-page `_! +Explore the diffpy.utils +`tutorials `_! .. toctree:: :hidden: diff --git a/publications.rst b/publications.rst index 85bdb2c9..16b2ffac 100644 --- a/publications.rst +++ b/publications.rst @@ -21,53 +21,3 @@ Please cite us if our software has been used in your research. * |citeFarrowJpcm07| * |citeProffenJac99| - - - -Publications using |diffpycmi| -============================= - -The following papers made use of DiffPy developed software for analysis -and/or modeling. - -* |citeJensenNc16| - -* |citeFrandsenPrl16| - -* |citeTerbanCgd16| - -* |citePrillAca16| - -* |citeTerbanNan15| - -* |citePrillJac15| - -* |citeDoanNguyenAcsn14| - -* |citeBeecherJacs14| - -* |citeGhidiuCC14| - -* |citeShiPRL14| - -* |citeFarrowJac14| - -* |citeAbeykoonArxiv14| - -* |citeMengqiangZhuESTL14| - -* |citeChoiNanol14| - -* |citeJacquesNc13| - -* |citeDavisCgd13| - -* |citeYangPccp13| - -* |citeFarrowJacs13| - -* |citeTyrstedAcie12| - -* |citeJensenJacs12| - -* |citeMengqiangZhuGca12|