PDFgetX3, PDFgetN3 and PDFgetS3¶
PDFgetX3, PDFgetN3 and PDFgetS3 are command-line utilities for automated batch processing of 1D powder diffraction data to obtain PDFs. For an affordable GUI that allows for high throughput conversion of multiple files with interactive graphics, please consider purchasing xPDFsuite. A version of PDFgetX3 that processes electron diffraction data is available by contacting NanoMegas (see here for more details)
PDFgetX3, PDFgetN3 and PDFgetS3 are easy to use, fast and convenient for automated batch processing. The interactive mode provides complete access to all parameters and intermediate results, as well as live-plotting feature that helps to tune conversion parameters and visualize their effect on the results. PDFgetX3, PDFgetN3 and PDFgetS3 are distributed together with Python library diffpy.pdfgetx, which provides the underlying PDF-processing functions and can be utilized in custom PDF-conversion scripts.
User PDFgetX3 for converting x-ray data, PDFgetN3 for neutron data (designed for reactor data explicitly and not tested on neutron time-of-flight data), and PDFgetS3 for converting correlation functions from nanoparticle assemblies in small angle scattering data into superlattice assembly structures.
The software is free for open academic research, but requires paid license for commercial use.
Download¶
The PDFgetX3, PDFgetN3 and PDFgetS3 software can be obtained for free from Columbia Technology Ventures, provided it will be used for open academic research (please cite the relevant paper below). If you plan to use the software in any other way, please contact mailto:techtransfer@columbia.edu at Columbia Technology Ventures.
Use the following steps to obtain the academic license and download the software:
Open new browser window at the licensing page https://columbia.resoluteinnovation.com/technologies/M11-120.
Select “Request License”
Click on the link for the free or paid license that is appropriate for your needs and situation
Follow the link to sign in (or sign up if you don’t already have a login)
Follow the prompts to submit the license request and wait for license confirmation email. Make a note of the URL so you can easily navigate back to this page.
Once the license is approved, the download link on the product page will become live and you can download the software to your local computer.
The download will be a zip file that contains versions of the software for all available Python versions and platforms. Extract the files from the zip file, open
INSTRUCTIONS.txtin a text editor and follow the instructions for installation.
Documentation¶
Version 2.4.0 - Latest¶
Added:
New
transformterminationfunctionsinfrastructure to allow non-trivial termination functionsAdded
Lorchtermination function optionDescription of terminationfunctions to docs
Fixed:
Build docs using the correct scikit-package script name
Reapply the Sphinx dependency m2r to m2r2 fix that seems to have inadvertently been lost
Previous Versions¶
Please reach out to mailto:techtransfer@columbia.edu if you need one of these versions
Version 2.3.0¶
Added:
Support for Python 3.11, 3.12, 3.13.
Added Cython build support.
Added .gitattribute for github release export.
Use bg-mpl-stylesheets as a style for matplotlib plots.
test for the Q-array issue
Added instructions in wheels bundle.
Added pdfgetx3 –list-examples and pdfgetx3 –example commands to list available examples and copy example dir into pwd.
Changed:
Changed build process. Now build *.c sdist and c binary wheels for each platform and python version.
Updated
tuneconfig.pyto use the latest api from matplotlib.Renamed get_atol() to get_atol_from_rtol() in test_pdfgetter.py
Standardized checking if a variable is an iterable.
Removed docs/source directory and makefiles in installation.
Changed twothetazerofit.ipy to output .png files instead of .pdf`and `.svgz files.
Fixed:
Refactored code for prefer_nodisplay_backend and suppress warnings.
Support scikit-package Level 5 standard (https://scikit-package.github.io/scikit-package/).
Replaced
setup.pywithpyproject.tomlfor releases.Fixed example import errors diffpy.structure because of Structure deprecation.
Fixed tutorial missing image file.
Removed:
Removed deprecated support for loadData, pdfgetxApplication.processFiles, pdfgetxApplication.clearSession, pdfgetxApplication.loadData.
Removed unused .coveragerc, .gitarchive.cfg, .gitattributes.
Support for Python 2.7, and Python <= 3.10
six, and other Py2 legacy codeRemoved pre-commit run in merge-to-main workflow
Version 2.2.1 - latest¶
Version 2.2.0¶
Version 2.1.2¶
Version 2.1.1¶
Version 2.1.0¶
Version 2.0.0¶
Version 1.2¶
References¶
If you use this software for a scientific research that leads to publication, we ask that you acknowledge the use of the software by citing the following paper in your publication:
P. Juhás and T. Davis, C. L. Farrow, S. J. L. Billinge, PDFgetX3: A rapid and highly automatable program for processing powder diffraction data into total scattering pair distribution functions, J. Appl. Crystallogr. 46, 560-566 (2013)

For publications that use this software to process neutron diffraction data we ask you to also cite:
P. Juhás, J. N. Louwen, L. van Eijck, E. T. C. Vogt, S. J. L. Billinge, PDFgetN3: atomic pair distribution functions from neutron powder diffraction data using ad hoc corrections, J. Appl. Crystallogr., 51, 1492–1497 (2018)

For publication that use this software to process small-angle scattering data we ask you to also cite:
CH Liu, E. Janke, R. Li, P. Juhás, O. Gang, D. V. Talapin, S. J. L. Billinge, sasPDF: pair distribution function analysis of nanoparticle assemblies from small-angle-scattering data.
