Robust and stable clustering of molecular dynamics simulation trajectories.
This software package provides extensive tools for fast, robust and stable
clustering of molecular dynamics trajectories.
The essential functions are:
Additionally, the package includes tools to efficiently filter original
coordinates or order parameters based on a discrete state definition
to identify representative structures and variables of clusters.
Computationally demanding functions are parallelized using CUDA or OpenMP.
All options are well documented and may be viewed by ‘clustering -h’.
A documentation can be found on the project page, including an extensive tutorial which describes all technical
details in performing a complete clustering run from trajectory to markov state model.
The source code itself is additionally documented via doxygen. Run ‘make doc’ in
the build directory (see below for installation intructions) to compile the source
code documentation in html. Otherwise, it can be viewed here.
The underlying methods are based on the following articles:
We kindly ask you to cite these articles if you use this software package for
published works.
This project was created by lettis and is currently maintained by moldyn-nagel.
Copyright (c) 2015-2019, Florian Sittel and Daniel Nagel
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
This package can be installed with conda via
conda install moldyn-clustering -c conda-forge
If conda is not available, it can be compiled as well.
required:
a recent C++ compiler (e.g. GNU g++ >= 4.9, must
support C++11 standard)
optional:
To quickly get a working (but possibly underperforming) binary
# tar xfz clustering_VERSION.tar.gz
# cd clustering_VERSION
# mkdir build
# cd build
# cmake .. -DCMAKE_INSTALL_PREFIX=/my/installation/path
# make
# make install
If you want to have bash completion enabled, you need to add following line to your .bashrc
# in file .bashrc
source /my/installation/path/bash_completion_clustering.sh
If you have an Nvidia graphic card it can be used to significantly speed up the
clustering density method, by setting the following cmake-option:
-DUSE_CUDA=1
If you have a modern computer with vectorizing instruction sets (SSE2, SSE4_2,
AVX, …), set the following cmake-option: -DCPU_ACCELERATION=
It is important to select an option that is actually supported by your machine.
Otherwise the program will produce erratic results, crash or not compile at all.
On linux systems, you can check your computer’s capabilities with
# cat /proc/cpuinfo
Check in the flags:-block, if a certain instruction set is supported.
If it is not listed, it is not supported.
To compile the code with ‘-march=native’ option (specific to the GNU compiler),
add ‘-DNATIVE_COMPILATION=ON’ to your cmake-flags.
Using this option, the GNU compiler will automatically use all available
instruction sets for optimal performance (attention: you still
need to set the vectorization option above, even if you use this option).
Unfortunately, the resulting binary will most likely run only on the computer
it was compiled on - do not use this option if you want
to distribute the binary, e.g. on a cluster.