Package: diffpy.srreal
diffpy.srrealCalculators for PDF, bond valence sum and other pair quantitiesThe diffpy.srreal package provides calculators for atomic pair distribution
function (PDF), bond valence sums (BVS), atom overlaps for a hard-sphere
model, bond distances and directions up to specified maximum distance.   The
atomic structure models are represented with internal classes as non-periodic,
periodic or structures with space group symmetries.  The package provides
implicit adapters from diffpy.structure classes or from Crystal or Molecule
objects from pyobjcryst.  Adapters can be easily defined for any other
structure representations in Python allowing their direct use with the
calculators.  Calculators support two evaluation models - BASIC, which
performs a full pair-summation every time, and OPTIMIZED, which updates only
pair contributions that have changed since the last evaluation.  Calculations
can be split among parallel jobs using Python multiprocessing package or any
other library that provides parallel map function.  PDF calculations can
be done in two modes - either as a real-space summation of peak profiles
(PDFCalculator) or as a reciprocal-space Debye summation and Fourier
transform of the total scattering structure function (DebyePDFCalculator).The diffpy.srreal package is a Python binding to the C++ library libdiffpy
(https://github.com/diffpy/libdiffpy).  Calculators are created as
objects of a given calculator type and so multiple instances of the same
calculator type can exist with different configurations.  Calculators are
composed of other objects that perform lower-level tasks, such as calculating
peak profile or looking up atom scattering factors.  These objects can be
re-assigned at runtime allowing to easily customize the calculation procedure.
New classes can be defined using object inheritance either in Python or in C++
and used with the existing calculators; as an example, this allows to
calculate PDF with a user-defined profile function.  A new calculator class
can be also defined for any quantity that is obtained by iteration over atom
pairs, by defining only the function that processes atom-pair contributions.For more information about the diffpy.srreal library, see users manual athttp://diffpy.github.io/diffpy.srreal.REQUIREMENTSThe diffpy.srreal package requires Python 3.7, 3.6, 3.5 or 2.7,
C++ compiler and the following software:setuptools- tools for installing Python packagesNumPy- library for scientific computing with Pythonpython-dev- header files for interfacing Python with Clibboost-all-dev- Boost C++ libraries and development files (1.43 or later)libdiffpy- C++ library for PDF, bond valence sum and other pair
quantity calculatorshttps://github.com/diffpy/libdiffpydiffpy.structure- simple storage and manipulation of atomic structureshttps://github.com/diffpy/diffpy.structurescons- software construction tool (optional)Optional software:periodictable- periodic table of elements in Pythonhttp://www.reflectometry.org/danse/elements.htmlpyobjcryst- Python bindings to ObjCryst++, the Object Oriented
Crystallographic library for C++,https://github.com/diffpy/pyobjcryst.We recommend to useAnaconda Pythonas it allows to install all software dependencies together with
diffpy.srreal.  For other Python distributions it is necessary to
install the required software separately.  As an example, on Ubuntu
Linux some of the required software can be installed usingsudo apt-get install \
   python-setuptools python-numpy scons \
   build-essential python-dev libboost-all-devTo install the remaining packages see the installation instructions
at their respective web pages.INSTALLATIONThe preferred method is to use Anaconda Python and install from the
“diffpy” channel of Anaconda packagesconda config --add channels diffpy
conda install diffpy.srrealdiffpy.srreal is also included in the “diffpy-cmi” collection
of packages for structure analysisconda install diffpy-cmiIf you prefer to install from sources, make sure all required software
packages are in place and then runpython setup.py installYou may need to usesudowith system Python so the process is
allowed to copy files to the system directories.  If administrator (root)
access is not available, see the output frompython setup.py install--helpfor options to install to
a user-writable location.  The installation integrity can be
verified by executing the included tests withpython -m diffpy.srreal.tests.runAn alternative way of installing diffpy.srreal is to use the SCons tool,
which can speed up the process by compiling C++ files in several
parallel jobs (-j4)sudo scons -j4 installSeescons-hfor decription of build targets and options.DEVELOPMENTdiffpy.srreal is an open-source software developed as a part of the
DiffPy-CMI complex modeling initiative at the Brookhaven National
Laboratory.  The diffpy.srreal sources are hosted athttps://github.com/diffpy/diffpy.srreal.Feel free to fork the project and contribute.  To install diffpy.srreal
in a development mode, where the sources are directly used by Python
rather than copied to a system directory, usepython setup.py develop --userTo rebuild the C++ extension module and then optionally test the code
integrity, usescons -j4 build=debug develop [test]When developing with Anaconda Python it is essential to specify
header path, library path and runtime library path for the active
Anaconda environment.  This can be achieved by setting theCPATH,LIBRARY_PATHandLDFLAGSenvironment variables as follows:# resolve the prefix directory P of the active Anaconda environment
P="$(conda info --json | grep default_prefix | cut -d\" -f4)"
export CPATH=$P/include
export LIBRARY_PATH=$P/lib
export LDFLAGS=-Wl,-rpath,$P/lib
# compile and re-install diffpy.srreal
scons -j4 build=debug developOn Mac OS X the distributed Anaconda packages are built for operating
system version 10.7, which may be incompatible with codes compiled on a
newer OS.  To avoid this problem set the environment variableMACOSX_DEPLOYMENT_TARGET=10.7.  This allows to build diffpy.srreal
against the Anaconda package for the libdiffpy library.CONTACTSFor more information on diffpy.srreal please visit the project web-pagehttp://www.diffpy.orgor email Prof. Simon Billinge atsb2896@columbia.edu.