Skip to content
Snippets Groups Projects
v2.5.md 14 KiB
Newer Older
Giovanni Bussi's avatar
Giovanni Bussi committed
@page CHANGES-2-5 Version 2.5

Giovanni Bussi's avatar
Giovanni Bussi committed
## Version 2.5 (Dec 19, 2018)
Giovanni Bussi's avatar
Giovanni Bussi committed

This page contains changes that will end up in 2.5

Changes from version 2.4 which are relevant for users:
- Changes leading to incompatible behavior:
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref RMSD, \ref MULTI-RMSD, \ref PATHMSD, \ref PROPERTYMAP, \ref PCAVARS, \ref PCARMSD, \ref FIT_TO_TEMPLATE,
    \ref DIPOLE, \ref ALPHARMSD, \ref ANTIBETARMSD, and \ref PARABETARMSD now automatically make molecules whole.
Giovanni Bussi's avatar
Giovanni Bussi committed
    In case you do not want them to do it, use NOPBC flag,
Giovanni Bussi's avatar
Giovanni Bussi committed
  - There is some subtle change in the installation layout (see below). There should be no visible effect, however it is now compulsory
    to set correctly the `LD_LIBRARY_PATH` variable for the linux executable to work correctly. The procedure has been tested well on OSX and Linux,
    but could give problems on other platform. Please report possible problems on the mailing list.
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref driver now stops correctly when using \ref COMMITTOR. If you want to continue the analysis, use the `NOSTOP` flag in \ref COMMITTOR.
  - \ref METAD the calculation of the reweighting factor is now activated by CALC_RCT instead of REWEIGHTING_NGRID and REWEIGHTING_NHILLS, the frequency of update can be set 
    by RCT_USTRIDE, the default value is 1 and should be OK for most of the cases
carlocamilloni's avatar
carlocamilloni committed
  - Fixed sign in Cartesian components of \ref PUCKERING with 6 membered rings (thanks to Carol Simoes and Javi Iglesias).
carlocamilloni's avatar
carlocamilloni committed

Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref COLLECT_FRAMES
  - \ref EUCLIDEAN_DISSIMILARITIES
  - \ref HBPAMM_MATRIX
  - \ref HBPAMM_SH
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref LANDMARK_SELECT_FPS
  - \ref LANDMARK_SELECT_RANDOM
  - \ref LANDMARK_SELECT_STAGED
  - \ref LANDMARK_SELECT_STRIDE
  - \ref OUTPUT_ANALYSIS_DATA_TO_COLVAR
  - \ref OUTPUT_ANALYSIS_DATA_TO_PDB
  - \ref OUTPUT_PCA_PROJECTION
  - \ref PAMM
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref PLUMED
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref PRINT_DISSIMILARITY_MATRIX
  - \ref PROJECT_ALL_ANALYSIS_DATA
  - \ref READ_DISSIMILARITY_MATRIX
  - \ref RESELECT_LANDMARKS
  - \ref REWEIGHT_WHAM
  - \ref SKETCHMAP_CONJGRAD
  - \ref SKETCHMAP_POINTWISE
  - \ref SKETCHMAP_READ
  - \ref SKETCHMAP_SMACOF
  - \ref SKETCH_MAP
  - \ref SMACOF_MDS
  - \ref WHAM_HISTOGRAM
  - \ref WHAM_WEIGHTS
carlocamilloni's avatar
carlocamilloni committed

Giovanni Bussi's avatar
Giovanni Bussi committed
- New command line tools:
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref completion (used to generate command line completion scripts).
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref pdbrenumber (see \issue{371}).

Giovanni Bussi's avatar
Giovanni Bussi committed
- New modules:
  - A new PIV module has been included, contributed by Silvio Pipolo and Fabio Pietrucci.
    This module implements the following collective variable:
    - \ref PIV
  - A new LOGMFD module has been included, contributed by Tetsuya Morishita.
    This module implements the following bias:
    - \ref LOGMFD

carlocamilloni's avatar
carlocamilloni committed
- Changes in the ISDB module
  - \ref CS2BACKBONE is now mpi parallelized in particular with DOSCORE and CAMSHIFT
  - \ref SAXS has an additional implementation based on Bessel functions that can be faster for large systems (new keyword BESSEL)
carlocamilloni's avatar
carlocamilloni committed
  - \ref SAXS keyword SCEXP has been renamed into SCALEINT
carlocamilloni's avatar
carlocamilloni committed
  - \ref SAXS includes the MARTINI bead structure factors for Proteins and Nucleic Acids
  - \ref SAXS includes a GPU implementation based on ArrayFire (need to be linked at compile time) that can be activated with GPU
carlocamilloni's avatar
carlocamilloni committed
  - \ref METAINFERENCE and all related methods has a new keyword REGRES_ZERO to scale data using a linear scale fit
  - \ref CALIBER new bias to perform Maximum Caliber replica-averaged restrained simulations 
Giovanni Bussi's avatar
Giovanni Bussi committed
- Changes in the eABF/DRR module (contributed by Haochuan Chen and Haohao Fu):
  - \ref DRR now supports the extended generalized ABF(egABF) method.
  - \ref DRR accepts different GRID options for CVs and extended variables.
  - The MAXFACTOR option is added in \ref DRR to control the factor of biasing force.
  - \ref drr_tool can calculate the divergence of gradients now. (Maybe useful for future pABF)
carlocamilloni's avatar
carlocamilloni committed
  - Fixed conflicts of output files in multiple replicas.
Giovanni Bussi's avatar
Giovanni Bussi committed

- Changes in the EDS module:
  - \ref EDS implements Levenberg-Marquardt optimization in addition to previous gradient descent. 
  - \ref EDS no longer automatically increases prefactor for bias parameter updates. This results in more stable optimization for the cases tested.
  - \ref EDS now has a larger default RANGE parameter to go with these other changes.

carlocamilloni's avatar
carlocamilloni committed
- Other changes:
  - \ref METAD there is a new FLYING_GAUSSIAN keyword to activate the flying gaussian methods by Spiwok (contributed by Spiwok and Hozzova)
carlocamilloni's avatar
carlocamilloni committed
  - \ref EXTERNAL can now SCALE the input grid. This allows for more flexibility without modifying the grid file.
  - \ref ALPHABETA can now combine dihedral angles with different coefficients
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref INCLUDE can now be used also before setup actions.
  - \ref CENTER can now be computed using trigonometric functions (PHASES) to simplify its calculation with periodic boundary conditions.
carlocamilloni's avatar
carlocamilloni committed
  - Libmatheval is not used anymore. \ref MATHEVAL (and \ref CUSTOM) are still available
Giovanni Bussi's avatar
Giovanni Bussi committed
    but employ an internal implementation of the lepton library.
    Functions available in libmatheval and absent in the original lepton library have been added so as to have backward compatibility.
Giovanni Bussi's avatar
Giovanni Bussi committed
    `atan2(y,x)` function has also been added.
    Notice that MATHEVAL (and CUSTOM) \ref switchingfunction "switching functions"
    using the lepton library have been further optimized with respect to PLUMED 2.4.
Giovanni Bussi's avatar
Giovanni Bussi committed
    Finally, notice that it is possible to use asmjit to optimize performance (see \ref Lepton).
Giovanni Bussi's avatar
Giovanni Bussi committed
  - Implemented bash autocompletion, see \ref BashAutocompletion.
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref MOLINFO now allows selecting atoms from chains with a numeric ID (see \issue{320}).
carlocamilloni's avatar
carlocamilloni committed
  - Removed the patch for GMX 5.1.4
  - LAMMPS patch has been finally removed. Notice that LAMMPS has native support for PLUMED now.
  - AMBER patch has been finally removed. Notice that AMBER (sander module) has native support for PLUMED starting from version 15.
Giovanni Bussi's avatar
Giovanni Bussi committed
  - \ref RMSD calculation has been optimized. This should positively affect the performances of CVs where
     many RMSD values are computed on small groups of atoms, such as secondary structure variables.
Giovanni Bussi's avatar
Giovanni Bussi committed
  - In \ref METAD, when using a bias factor equal to one (no bias) the `rct` component is set to zero rather than to one.
  - New shortcuts are available for selecting atoms: `@allatoms` and `@mdatoms` (see \ref atomSpecs).
Giovanni Bussi's avatar
Giovanni Bussi committed
  - When using \ref MOLINFO, also the following shortcuts are available for selecting atoms: `@nucleic`, `@protein`, `@water`, `@ions`, `@hydrogens`, `@nonhydrogens`.
  - When using \ref MOLINFO, individual atoms can be chosen also from water molecules (e.g. `@OW-100`).
carlocamilloni's avatar
carlocamilloni committed
  - Additional switching function COSINUS contributed by Michael King
carlocamilloni's avatar
carlocamilloni committed
  - added API to set the number of used openMP threads from the linked code, updated gromacs 2018.3 patch to use it

Changes from version 2.4 which are relevant for developers:
Giovanni Bussi's avatar
Giovanni Bussi committed
- Code has been cleanup up replacing a number of pointers with `std::unique_ptr`. All `delete` statements
  in the core parts of the code have been eliminated.
Giovanni Bussi's avatar
Giovanni Bussi committed
- Exceptions cannot be disabled (`--disable-cxx-exceptions` option has been removed from `./configure`).
Giovanni Bussi's avatar
Giovanni Bussi committed
- Every exception thrown in PLUMED now also writes its message on PLUMED log.
- Runtime loader in `Plumed.c` now works also when linked without `-rdynamic` (that is, 
Giovanni Bussi's avatar
Giovanni Bussi committed
  its names are not exported). Notice that all the combinations are expected to
  work, that is: `Plumed.c` from <=2.4 or >=2.5 combined with libplumedKernel
  from <=2.4 or >=2.5. In order to achieve this the following changes are implemented:
  - libplumedKernel does not depend anymore on `Plumed.c`. This allows loading it even
    in cases where names in the loader are not visible. The relevant function needed
    to be compatible with `Plumed.c` <=2.4 are found using `dlsym`.
  - `Plumed.c` does not need anymore libplumedKernel to register itself, but rather
    searches the relevant functions using `dlsym`. In addition, if it is not able to
    load `libplumedKernel` since the latter is <=2.4 and needs `Plumed.c` to be visible,
    it just uses as a fallback `libplumed`, which should load properly.
- In addition to the capability mentioned above, the MD-code interface has been significantly
  improved and allows for:
  - Translation of exception (allowing to mix PLUMED and an MD-code linked against a different C++ library).
  - Possibility to choose the path to the PLUMED kernel while instantiating a Plumed object.
  See the developer documentation for more information.
Giovanni Bussi's avatar
Giovanni Bussi committed
- The installation layout of shared libraries has been modified. In particular,
Giovanni Bussi's avatar
Giovanni Bussi committed
  both `libplumed.so` and `plumed` links to `libplumedKernel.so`.
Giovanni Bussi's avatar
Giovanni Bussi committed
  This reduces considerably the size of the installed package. In addition, it allows
  using two-level namespace on OSX. Notice that this implies that on Linux one should
  always set the `LD_LIBRARY_PATH` flag to have a working executable.
Giovanni Bussi's avatar
Giovanni Bussi committed
- A smaller number of header files is installed. In particular, all the files that were historically generated in subdirectories
  (such as `plumed/core/tools/Vector.h', just including `plumed/tools/Vector.h`) are not installed and the related include
  statements are fixed. This makes the installed package smaller.
Giovanni Bussi's avatar
Giovanni Bussi committed
- List of preferred compilers (used when `CXX` or `CC` are not set) has been changed. On OSX, `./configure` will try `clang++/clang` as first choices.
Giovanni Bussi's avatar
Giovanni Bussi committed
- Added `--enable-static-archive` to `./configure` to build a `libplumed.a` static library (yes by default).
Giovanni Bussi's avatar
Giovanni Bussi committed
- Stop setting `DYLD_LIBRARY_PATH` in `sourceme.sh` and in modulefile. Notice that as of PLUMED v2.3.3
  it should not be needed.
Giovanni Bussi's avatar
Giovanni Bussi committed
- Coverage scan is not anymore contained in developer manual. It can be found in a separate repository
Giovanni Bussi's avatar
Giovanni Bussi committed
  `github.com/coverage-branch` (see \issue{348}). In addition, coverage for third-party libraries included in PLUMED
  is reported as well.
- It is not possible anymore to use `make install prefix=/path`. Prefix can only be changed during `./configure` (see \issue{332}).
Giovanni Bussi's avatar
Giovanni Bussi committed
- Exception class has been rewritten to allow more extensive messages. Now also function name is shown.
- On linux, library is linked with `-Bsymbolic`.
Giovanni Bussi's avatar
Giovanni Bussi committed
- When launching `plumed`, flags `--no-mpi` and `--mpi` can appear multiple times. The last appearence is the effective one.
- Internal BLAS and LAPACK libraries updated to gromacs 2018.
- Choosing `./configure --prefix=$PWD` does not lead anymore to deletion of all header files.
Giovanni Bussi's avatar
Giovanni Bussi committed
- A copy of `plumed-runtime` is installed in `prefix/lib/plumed` and can be used for testing.
Giovanni Bussi's avatar
Giovanni Bussi committed
- Absolute/relative soname/install_name can be configured on linux/OSX. This feature is only
  for testing, the default choice is the typical one used on the respective operating system.
- On OSX, `plumed` and `libplumed.dylib` will find `libplumedKernel.dylib` using `@loader_path`.
carlocamilloni's avatar
carlocamilloni committed
- Using CXX compiler to link the main program.
- plumed can be compiled with ArrayFire to enable for gpu code. \ref SAXS collective variable is available as part of the isdb module to provide an example of a gpu implementation for a CV
Giovanni Bussi's avatar
Giovanni Bussi committed

Giovanni Bussi's avatar
Giovanni Bussi committed
## Version 2.5.1 (Apr 1, 2019)

For users:
- in \ref SAXS the keyword ADDEXP is removed. Furthemore, SAXS intensities are automatically normalised for I(0)=1, in case experimental data are provided, the intensity is rescaled with the intensity of the lowest q provided. As a consequence SCALEINT is only needed for additional adjustments.
carlocamilloni's avatar
carlocamilloni committed
- gromacs patch updated to gromacs 2018.5
- Fixed a bug in gromacs patch that was resulting in incorrect number of threads (0) set when not explicitly using `-ntomp` on the 
Giovanni Bussi's avatar
Giovanni Bussi committed
  command line or setting `OMP_NUM_THREADS` (see \issue{446}). To apply this fix you need to re-patch gromacs.
  Notice that setting the number of threads to zero might lead to inconsistent results when using secondary structure variables
  or other multicolvars.
- Fixed PLUMED so that when zero threads are selected from gromacs (see previous fix) the number of used threads is set to 1.
  This fix allows to use a GROMACS executable patched with PLUMED 2.5.0 and linked at runtime with PLUMED 2.5.1 without introducing
  errors. However, re-patching is preferred since it selectes the correct number of threads.
Giovanni Bussi's avatar
Giovanni Bussi committed
- Python wrappers:
  - Fixed building of python interface on MacOS Mojave (see \issue{445}, thanks to Omar Valsson).
  - Numpy is not required anymore at build time (though it is required at runtime for our tests).
  - Raw python arrays can be passed as an alternative to Numpy ndarrays.
Giovanni Bussi's avatar
Giovanni Bussi committed
## Version 2.5.2 (Jul 19, 2019)

For users:
- New shortcuts are available for selecting protein atoms: `@chi2-#`, `@chi3-#`,`@chi4-#` and `@chi5-#`
Giovanni Bussi's avatar
Giovanni Bussi committed
- Fixed performance of \ref CUSTOM when having zero derivatives with respect to some arguments.
carlocamilloni's avatar
carlocamilloni committed
- New --parse-only option in \ref driver to check the validity of a plumed input file
carlocamilloni's avatar
carlocamilloni committed
- New patch for GROMACS 2019.2
- Module VES: Fixed performance of \ref BF_CUSTOM for basis functions with linear terms (e.g. having zero derivatives). 
Giovanni Bussi's avatar
Giovanni Bussi committed
- Python wrappers:
  - Python module is now always named `plumed` irrespectively of program prefix and suffix. Notice 
Giovanni Bussi's avatar
Giovanni Bussi committed
    that python module is installed inside the `lib/program_name` directory and thus it is not necessary to
    use `program_name` in order to install multiple modules side by side.
Giovanni Bussi's avatar
Giovanni Bussi committed
  - Python module can be compiled without compiling PLUMED first.
Giovanni Bussi's avatar
Giovanni Bussi committed
  - `Plumed` object can be explicitly finalized using `finalize()`. Can be used to make sure all files are closed,
    but it is not necessary if the `Plumed` object gets correctly collected by Python.
  - `Plumed` object can be used in context managers (e.g. `with plumed.Plumed() as p:`).
- Precompiled binaries are available on Anaconda cloud on the [conda-forge channel](https://anaconda.org/conda-forge/plumed).
Giovanni Bussi's avatar
Giovanni Bussi committed

Giovanni Bussi's avatar
Giovanni Bussi committed
## Version 2.5.3 (coming soon)
Giovanni Bussi's avatar
Giovanni Bussi committed

For users:
carlocamilloni's avatar
carlocamilloni committed
- Fixed a bug with \ref CONVERT_TO_FES and periodic variables, see \issue{441} 
carlocamilloni's avatar
carlocamilloni committed
- New patch for GROMACS 2019.4
Giovanni Bussi's avatar
Giovanni Bussi committed
- Python module:
Giovanni Bussi's avatar
Giovanni Bussi committed
  - Fixed building with clang-8.
Giovanni Bussi's avatar
Giovanni Bussi committed
  - Set `language_level` for cython to the actually used language level.
  - Force using cython when compiling from source. Still using the pre-generated cpp file
    when installing from PyPI, to avoid cython dependency.
  - Using python 2 to create the cpp file uploaded on PyPI (this will change to python 3 in 2.6, see \issue{502}).
carlocamilloni's avatar
carlocamilloni committed
- Module VES: Fixed a bug in updating of bias potential in \ref VES_LINEAR_EXPANSION that is present for certain integrators that call the calculation of the bias multiple times (see [here](https://groups.google.com/d/msg/plumed-users/kPZu_tNZtgk/LrkS0EqrCQAJ)) and replica exchange.