Introduction
PMSCO stands for PEARL multiple-scattering cluster calculations and structural optimization. It is a collection of computer programs to calculate photoelectron diffraction patterns, and to optimize structural models based on measured data.
The actual scattering calculation is done by code developed by other parties. PMSCO wraps around that program and facilitates parameter handling, cluster building, structural optimization and parallel processing. In the current version, the EDAC code developed by F. J. García de Abajo, M. A. Van Hove, and C. S. Fadley (1999) is used for scattering calculations. Instead of EDAC built-in routines, alternatively, the PHAGEN program from MsSpec-1.0 can be used to calculate atomic scattering factors.
Highlights
- angle and energy scanned XPD.
- various scanning modes including energy, manipulator angle (polar/azimuthal), emission angle.
- averaging over multiple domains and emitters.
- global optimization of multiple scans.
- structural optimization algorithms: particle swarm optimization, grid search, gradient search.
- calculation of the modulation function.
- calculation of the weighted R-factor.
- automatic parallel processing using OpenMPI.
- tested on Linux cluster machines.
Installation
PMSCO is written in Python 3.6. The code will run in any recent Linux environment on a workstation or virtual machine. Scientific Linux, CentOS7, Ubuntu and Lubuntu (recommended for virtual machine) have been tested. For optimization jobs, a cluster with 20-50 available processor cores is recommended. The code requires about 2 GB of RAM per process.
Detailed installation instructions and dependencies can be found in the documentation (docs/src/installation.dox). A Doxygen compiler with Doxypy is required to generate the documentation in HTML or LaTeX format.
The easiest way to set up an environment with all dependencies and without side-effects on other installed software is to use a Singularity container. A Singularity recipe file is part of the distribution, see the PMSCO documentation for details. On newer Linux systems (e.g. Ubuntu 18.04), Singularity is available from the package manager. Installation in a virtual box on Windows or Mac is straightforward using the Vagrant system. A Vagrant file is included in the distribution.
The public distribution of PMSCO does not contain the EDAC code. Please obtain the EDAC source code from the original author, copy it to the pmsco/edac directory, and apply the edac_all.patch patch.
License
The source code of PMSCO is licensed under the Apache License, Version 2.0. Please read and respect the license agreement.
Please share your extensions of the code with the original author. The gitlab facility can be used to create forks and to submit pull requests. Attribution notices for your contributions shall be added to the NOTICE.md file.
Author
Matthias Muntwiler, mailto:matthias.muntwiler@psi.ch
Copyright
Copyright 2015-2020 by Paul Scherrer Institut
Release Notes
For a detailed list of changes, see the CHANGES.md file.
2.2.0 (2020-09-04)
This release breaks existing project code unless the listed refactorings are applied.
- Major refactoring: The 'symmetry' calculation level is renamed to 'domain'. The previous Domain class is renamed to ModelSpace, Params to CalculatorParams. The refactorings must be applied to project code as well.
- Included periodic table of elements with electron binding energies and scattering cross-sections.
- Various bug fixes in cluster routines, data file handling, and in the PHAGEN interface.
- Experimental sqlite3 database interface for optimization results.