Giter Club home page Giter Club logo

plumed / plumed2 Goto Github PK

View Code? Open in Web Editor NEW
345.0 33.0 279.0 183.29 MB

Development version of plumed 2

Home Page: https://www.plumed.org

License: GNU Lesser General Public License v3.0

Shell 1.40% Makefile 0.70% Fortran 2.13% CMake 0.50% C 0.52% C++ 89.14% Tcl 0.19% CSS 0.02% Python 1.28% TeX 0.74% HTML 1.50% M4 0.32% Roff 0.47% Awk 0.29% Perl 0.06% Dockerfile 0.01% Cython 0.34% Vim Script 0.01% Cuda 0.40%
molecular-dynamics plugin c-plus-plus plumed free-energy plumed2 enhanced-sampling trajectory-analysis

plumed2's Introduction

Homepage Homepage codecov License: LGPL v3 Github Releases MacPorts package Anaconda-Server Badge AUR package DPorts package FreeBSD port Spack package Twitter Follow

Branches and releases

Several branches and tags are stored on the git repository.

Branches named v2.X correspond to release branches.

Master branch may contain non tested features and is not expected to be used by non-developers. It typically contains features that will be available on the next release.

Tags named v2.XbY correspond to beta releases, use it with care. Tags named v2.X.Y correspond to official releases, use the latest available.

In addition, the repository contains a number of other branches related to specific features. Please contact the developers that are committing on those branches before basing your work there, since they might contain temporary work and might be rebased later. For instance, branch testdoc is setup so as to push a test copy of the manual and is often force pushed.

To report problems found on beta or official releases, use the normal [email protected] mailing list. Please state exactly which version you are using. To report problems found on master branch, use the [email protected] mailing list. This is also the correct place for discussions about new features etc. When reporting please provide the git hash (you can obtain it with git rev-parse HEAD).

Status

Below you find the status on GitHub Actions for the release branches.

Branch Status First stable release (year) Still supported
master CI 2024 (expected) /
v2.9 CI 2023 yes
v2.8 CI 2022 yes
v2.7 CI 2020 no
v2.6 CI 2019 no
v2.5 CI 2018 no
v2.4 CI 2017 no
v2.3 Build Status 2016 no
v2.2 Build Status 2015 no
v2.1 Build Status 2014 no
v2.0 Not available 2013 no

Content

Here's a description of the content of each file and directory in the root PLUMED directory.

CHANGES          : change log
COPYING.LESSER   : license
Makefile         : makefile
Makefile.conf.in : template configuration makefile
PEOPLE           : list of authors
README.md        : this file
VERSION.txt      : version file
astyle           : a local version of astyle, used to format code
configure        : configuration script
configure.ac     : configuration script (autoconf)
developer-doc    : developer documentation
docker           : directory where Docker is generated
macports         : directory where Portfiles are generated
patches          : patch scripts
python           : python stuff
regtest          : regression tests, including reference results
release.sh       : developer utility to publish releases
scripts          : shell tools
sourceme.sh.in   : template configuration script
src              : source code
test             : examples
user-doc         : user documentation
vim              : directory where vim syntax is generated

Required software

Required software:

  • GNU make.
  • C/c++ compiler (c++17 support is required as of version 2.10).
  • A modern version of the patch command line tool.

Suggested software (libraries are checked by ./configure and enabled if available):

  • MPI library to run parallel simulations. It should be the same library used by your MD code.
  • Optimized blas and lapack libraries. They are automatically replaced by an internal version if not available.
  • VMD molfile plugins to read arbitrary file formats. They are automatically replaced by an internal version supporting a few formats if not available.
  • Zlib library to use compressed data files.
  • Doxygen to build user manual. Doxygen might need the following packages:
    • Latex to build the pdf user manual.
    • Graphviz to show class hierarchy in developer manual.

Quick compilation instructions

Extensive installation instructions are in the user documentation. Quick instructions:

./configure --prefix=$HOME/opt
make
make doc # optional
make test # optional

User documentation can be found at user-doc/html/index.html. Developer documentation can be found at developer-doc/html/index.html. Pre-compiled documentation is available online, so this is only required if you are working with a modified version of the code!

In order to run PLUMED without installing it you should type source sourceme.sh. However, we recommend installing PLUMED. To install it in $HOME/opt (directory should be set during ./configure):

umask 022
make install

Now you will be able to run plumed using e.g.

plumed help

If you compiled your own documentation, paths to the installed documentation can be found with command plumed info --user-doc.

A sample modulefile with environment variable will be placed in $HOME/opt/lib/plumed/src/lib/modulefile. This can be useful if you want to install multiple PLUMED versions side by side and select them with env modules.

plumed2's People

Contributors

andrea-arsiccio avatar bpampel avatar carlocamilloni avatar davidebr avatar dvdesolve avatar fspacheco avatar giovannibussi avatar gtribello avatar h2nch2co2h avatar hanatok avatar hmcezar avatar hockyg avatar invemichele avatar iximiel avatar jakryd avatar jandom avatar luigibonati avatar marckn avatar maxbonomi avatar pablopiaggi avatar ralf-meyer avatar rebelot avatar sandipde avatar spiwokv avatar tetsuyamorishita avatar thorbenf avatar tlhr avatar tonigi avatar valsson avatar whitead avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

plumed2's Issues

Test bug

This is just to test the tracking system

GRID: More detailed error messages

+++ Internal PLUMED error
+++ file Grid.cpp, line 170
+++ message: assertion failed indices[i]>=0 && indices[i]<nbin_[i]

when a CV fall outside the GRID the error should be more explicative: which cv? and possible which replica?

Adaptive hills (GEOM) cannot be used with ENERGY

The gradients of ENERGY are never stored, so that it is not possible to use the adaptive hills based on projections of gradients. It is possible to remove this constraint, but it takes a bit of work and, to me, it is not clear if it is useful.

Replica exchange stuck with empty plumed.dat

(pointed out by Apratim Bhattacharya; I just put it here to test issues in github)

Replica exchange with gromacs and multiple processors per replica is stuck after first exchange if plumed.dat file is empty. Observed with gromacs 4.6 and plumed 2.0b0.

Add documentation on install procedure

We should explain in the manual what is going to happen when one types "make install" (where are files copied etc). Also I think we can say something about how to use modules ("module load ...") to have concurrent plumed versions.

Restart METAD from grid

It can accelerate a lot restart when one has a lot of accumulated hills. It is already possible to do it using GRID_RFILE (see f623f3c). However, I think that it should be integrated with RESTART procedure and it should scale properly bias potential when restarting a well-tempered metadynamics with a different BIASFACTOR

Warning in overloaded virtual function

@gtribello I got this warning on master branch:
./MultiColvarFunction.h:58:8: warning: 'PLMD::multicolvar::MultiColvarFunction::addOrientationDerivatives' hides overloaded virtual function [-Woverloaded-virtual]
void addOrientationDerivatives( const unsigned& iatom, const std::vector& der );

This is possibly a bug (it is not clear which function should be called). Can you fix it?
Thanks!
Giovanni

Using regexps in atom selections

Since 68473e2 we can use regexps in argument selection.

This could be extended to atom selection also. This, in combination with atom selections by name (#32) would allow for a very powerful selection syntax, e.g.:
ATOMS=(ALA1:.) # the whole residue
ATOMS=(.
:CA) # all the C-alpha
ATOMS=(.:(CA)|(CB)) # all the C-alpha and C-beta
ATOMS=(.
:H.) # all hydrogens
ATOMS=(.
:[^H].*) # all non-hydrogens

Enhancing performance at high parallelism - atom distribution

I experimented a bit on BlueGeneQ and it seems that we could gain performance in atom distribution. In particular, an useful trick I found useful is to use asynchronous distribution of atoms to a subset of the processors and then using an intra-group broadcast. This is not difficult to implement, but it is a bit difficult to choose the parameters.

Faster RMSD when align!=displace

Now there are two routines, one that is used when align==displace (faster) and another one used when align!=displace (slower). Difference in speed is large (x10-50). We should either optimize the slow routine or implement align!=displace in the fast one.

Automatic configure

I had a look at autoconf some time ago. It is not really straightforward, but since the number of external optional libraries we are linking grows (matheval, almost, regexp, possibly molfile, what else...) it is probably a good idea to try to automatize the search and the setting of -D__PLUMED_HAS_WHATEVER macros.

Translate tutorial to plumed 2 syntax

I think we should take the Lausanne tutorial (sites.google.com/site/plumedtutorial2010/) and translate it in plumed 2 syntax. It could be incorporated in the manual (in the How To section).

Negative stride in atom ranges

I want to allow one to write
GROUP ATOMS=10-1:-1
instead of explicitly
GROUP ATOMS=10,9,8,7,6,5,4,3,2,1

I find this useful in some case with WHOLEMOLECULES, where order of the atoms needs to be correct and backward ordering is sometime necessary.

Managing gzipped files

Since all the plumed output files are textual, one could gain a lot of space using gzip library to output directly compressed files. Then it is easy to restore them with gzcat (also from gnuplot)

Wrong order for cmd("setStopFlag")

As of now, this command should be called before initialization. Since it should point to a variable that is possibly changed at every step, I think it makes more sense to call it after initialization.

I think this should be considered as a bug and I want to fix it in 2.0.x. In this way, in case someone integrates plumed 2.0.x with an external MD code, behavior will be consistent in the future.

I pushed a fix for this (392bac3) where I also changed accordingly the Driver.
I will merge it to v2.0 in the next days. @gtribello can you check if this makes sense?

Giovanni

Speed up COORDINATION avoiding sqrt

It should be possible to speed up the coordination (and other variables based on switching functions) when using RATIONAL switching functions with even exponents (e.g. 6 and 12) and d0=0, by avoiding the square root calculation. Since this is a very very common case, I want to change the code to allow this optimization.

Make neighbor lists compatible with replica exchange

Currently all variables involving neighbor lists are not working properly with replica exchange. They should all crash the code, and one can easily disable neighbor lists to have a working code. However, we should make an effort such that it is possible to reset the neighbor lists after an exchange has been done.

This is related to #26

Getting more info from MD engine

There are some info that presently should be specified on both MD input and PLUMED input. I think for as many as possible of them we should allow setting them directly from the MD code (as I learned from a student's error...). Examples are:
RESTART
TEMP in METAD and in HISTOGRAM
MOLINFO # this is very difficult, so probably still it is better to provide it with a pdb

Feel free to add to this list!

This will obviously require changing the MD patches adding calls such as
plumed_cmd("setTemp",&temperature)
This calls should be optional, so as to allow other patches (or MD codes directly calling plumed) to work correctly. I will try to find a way to do it with a minimal impact on current MD patches. I mean: if a patch is not setting temperature, plumed should not complain and TEMP should be set in the usual way from plumed.dat (this is easy). Conversely, if a patch is setting the temperature, an older (2.0.x) version of plumed should just ignore it (this requires some work).

I currently foresee two approaches.

(A) Probe the PLUMED version from the MD code:
plumed_cmd("getApiVersion",&version);
if(version>1) plumed_cmd("setTemp",&temp);

(B) Allow optional commands. Something like
plumed_cmd("?setTemp",&temp);
// will not crash if "setTemp" is not currently implemented

The second I think could be cleaner in the long run. The negative side is that it requires updating also plumed 2.0.x to be compatible with future MD patches so as to ignore all the unknown commands beginning with "?". Moreover, an erroneous
plumed_cmd("?setTem",&temp); // notice setTem instead of setTemp
will be just ignored. This scares me a bit.

Any comment is welcome!

Giovanni

Improve regtest suite to avoid false errors due to numerical differences

We already improved a lot removing many numerical derivatives and by decreasing the precision of output file. However, I am still finding errors where "0.000" is different from "-0.000". Probably the only solution is to use a sort of numerical diff, but then it will not be easy to set the threshold... Ideas are welcome!

DAFED

Should be ported from plumed1. Could be implemented together with TAMD.

Having synonymous cmd line options

@gtribello do you think it is possible (and easy) to have short form for all the command line options, in such a way that this also appears in the manual? E.g.
--hills|-H ....

Maybe if we add keys using "add(--hills|-H)" we could just modify the mechanism that does the matching. I have no idea if this is something easy or difficult to do...

Add committor analysis

Probably simple conditions such as "lower than" or "higher than" are flexible enough - at least in combination with e.g. MATHEVAL. It would be nice to have a clean exit (also from MD simulation).

Find a way to sync COLVAR/HILLS with gromacs checkpoint

GROMACS is checkpointing regularly. When restarting, trajectories are properly appended also if the checkpoint has been saved earlier than the last trajectory snapshot. I.e., trajectories are cut at the proper time (and a small portion of the trajectory is repeated). I think it would be great to have something such that if the first column of a file is time (this is true for most plumed output files) the latest part of the file (past the checkpoint time) is deleted upon restart.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.