Robust and stable clustering of molecular dynamics simulation trajectories.
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
coords_file
doc
scripts
CMakeLists.txt
FindOpenCL.cmake
LICENSE.txt
README.md
cl.hpp
clustering.cpp
config.hpp.cmake.in
coring.cpp
coring.hpp
create_header_hpp.sh
density_clustering.cpp
density_clustering.hpp
density_clustering_common.cpp
density_clustering_common.hpp
density_clustering_cuda.cu
density_clustering_cuda.hpp
density_clustering_cuda_kernels.cu
density_clustering_cuda_kernels.hpp
density_clustering_mpi.cpp
density_clustering_mpi.hpp
density_clustering_opencl.cpp
density_clustering_opencl.hpp
doxygen.config
embedded_cytoscape.hpp
generate_header.py
header.html
logger.cpp
logger.hpp
lts_cuda_kernels.cuh
make_version.sh
mpp.cpp
mpp.hpp
network_builder.cpp
network_builder.hpp
state_filter.cpp
state_filter.hpp
tools.cpp
tools.hpp
tools.hxx

README.md

This software package provides extensive tools for robust and stable clustering of molecular dynamics trajectories. The essential functions are:

  • density-based geometric clustering for microstate generation
  • dynamic clustering based on the Most-Probable-Path algorithm (MPP)
  • variable dynamic coring for boundary corrections

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 OpenMP.

Documentation

All options are well documented and may be viewed by 'clustering -h'.

The 'doc' directory includes 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.

Citations

The underlying methods are based on the following articles:

  • A. Jain and G. Stock, Hierarchical folding free energy landscape of HP35 revealed by most probable path clustering, J. of Phys. Chem. B, 118, 7750 - 7760, 2014; DOI: 10.1021/jp410398a
  • F. Sittel and G. Stock, Robust Density-Based Clustering to Identify Metastable Conformational States of Proteins, J. Chem. Theory Comput., Article ASAP; DOI: 10.1021/acs.jctc.5b01233

We kindly ask you to cite these articles if you use this software package for published works.

Licensing

Copyright (c) 2015, Florian Sittel All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.

  2. 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.

Installation

Requirements

required:

  • BOOST >= 1.49
  • cmake >= 2.8
  • a recent C++ compiler (e.g. GNU g++ >= 4.9, must support C++11 standard)

optional:

  • doxygen (to build the API docs)

Quick-Start

To quickly get a working (but possibly underperforming) binary

  • unpack the code ...

    # tar xfz clustering_VERSION.tar.gz

  • create a build folder inside the code directory ...

    # cd clustering_VERSION

    # mkdir build

  • change to the build directory ...

    # cd build

  • ... and run cmake

    # cmake .. -DCMAKE_INSTALL_PREFIX=/my/installation/path

  • then compile and install the package to /my/installation/path (or any other path you chose above) by invoking

    # make

    # make install

Optimized Binaries and Custom Build Options

Vectorization

If you have a modern computer with vectorizing instruction sets (SSE2, SSE4_2, AVX, ...), set the following cmake-option: -DCPU_ACCELERATION=, where is one of

  • SSE2
  • SSE4_1
  • SSE4_2
  • AVX

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.

Native Compilation

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.