diff --git a/user-doc/tutorials/aa-lugano-1.txt b/user-doc/tutorials/aa-lugano-1.txt new file mode 100644 index 0000000000000000000000000000000000000000..6d2c084ba8f76984021b9b115399c735e8b4df53 --- /dev/null +++ b/user-doc/tutorials/aa-lugano-1.txt @@ -0,0 +1,285 @@ +/** +\page lugano-1 Lugano tutorial: Introduction to PLUMED syntax and analyzing CVs + +\section lugano-1-aims Aims + +The aim of this tutorial is to introduce you to the PLUMED syntax. We will go through the writing of input files to calculate +and print simple collective variables on a pre-calculated trajectory. + +\section lugano-1-lo Learning Outcomes + +Once this tutorial is completed, students will be able to: + +- TODO +- Write a simple PLUMED input file and use it with the PLUMED \ref driver to analyze a trajectory. +- Use the \ref GROUP keyword to make the input file compact and easy to read and to quickly build complex atom groups. +- Print collective variables such as distances + (\ref DISTANCE), torsional angles (\ref TORSION), gyration radius (\ref GYRATION), and RMSD (\ref RMSD) using the \ref PRINT action. +- Learn how to use \ref MOLINFO shortcuts +- Take care of periodic boundary conditions within PLUMED using \ref WHOLEMOLECULES and be able to verify the result with \ref DUMPATOMS. + + +\section lugano-1-resources Resources + +The reference trajectories and other files needed for the exercises proposed in this tutorial +can be downloaded from `github` using the following command: + +\verbatim +wget https://github.com/plumed/lugano2019/raw/master/handson_1/handson_1.tgz +\endverbatim + +The zip archive contains the following files: +- GB1_native.pdb : A PDB file with the native structure of the GB1 protein. +- traj-whole.xtc: A trajectory in xtc format. To make the exercise easier, GB1 has been made whole already. +- traj-broken.xtc: The same trajectory as it was originally produced by GROMACS. Here GB1 is broken by periodic boundary conditions and should be fixed. + +This tutorial has been tested on a pre-release version of PLUMED 2.6. However, it should also work with PLUMED version 2.5. + +\section lugano-1-instructions Instructions + +PLUMED is a library that can be incorporated into many MD codes by adding a relatively simple and well documented interface. +Once it is incorporated you can use PLUMED to perform a variety of different analyzes on the fly and to bias +the sampling in the molecular dynamics engine. PLUMED can also, however, be used as a standalone code for analyzing trajectories. +If you are using the code in this way you can, once PLUMED is compiled, run the plumed executable by issuing the command: + +\verbatim +plumed <instructions> +\endverbatim + +Let's start by getting a feel for the range of calculations that we can use PLUMED to perform. Issue the following command now: + +\verbatim +plumed --help +\endverbatim + +What is output when this command is run is a list of the tasks you can use PLUMED to perform. There are commands that allow you +to patch an MD code, commands that allow you to run molecular dynamics and commands that allow you to build the manual. In this +tutorial we will mostly be using PLUMED to analyze trajectories, however. As such most of the calculations we will perform will be performed +using the driver tool. Let's look at the options we can issue to plumed driver by issuing the following command: + +\verbatim +plumed driver --help +\endverbatim + +As you can see we can do a number of things with plumed driver. For all of these options, however, we are going to need to write +a PLUMED input file. The syntax of the PLUMED input file is the same that we will use later to run enhanced sampling simulations, +so all the things that you will learn now will be useful later when you will run PLUMED coupled to an MD code. +In the following we are going to see how to write an input file for PLUMED. + +\subsection lugano-1-units PLUMED's internal units + +By default the PLUMED inputs and outputs quantities in the following units: + +- Energy - kJ/mol +- Length - nanometers +- Time - picoseconds + +If you want to change these units you can do this using the \ref UNITS keyword. + +\section lugano-1-structure The syntax of the PLUMED input file + +The main goal of PLUMED is to compute collective variables, which are complex descriptors than can be used +to analyze a conformational change or a chemical reaction. This can be done either on-the-fly during +molecular dynamics or a posteriori, using PLUMED as a post-processing tool. +In both cases one, should create an input file with a specific PLUMED syntax. A sample input file is below: + +\plumedfile +# Compute distance between atoms 1 and 10. +# Atoms are ordered as in the trajectory files and their numbering starts from 1. +# The distance is called "d" for future reference. +d: DISTANCE ATOMS=1,10 + +# Create a virtual atom in the center between atoms 20 and 30. +# The virtual atom only exists within PLUMED and is called "center" for future reference. +center: CENTER ATOMS=20,30 + +# Compute the torsional angle between atoms 1, 10, 20, and center. +# Notice that virtual atoms can be used as real atoms here. +# The angle is called "phi" for future reference. +phi1: TORSION ATOMS=1,10,20,center + +# the same CV defined before can be split into multiple line +TORSION ... +LABEL=phi2 +ATOMS=1,10,20,center +... + +# Print d every 10 step on a file named "COLVAR1". +PRINT ARG=d STRIDE=10 FILE=COLVAR1 + +# Print phi1 and phi2 on another file names "COLVAR2" every 100 steps. +PRINT ARG=phi1,phi2 STRIDE=100 FILE=COLVAR2 +\endplumedfile + +In the input file above, each line defines a so-called action. An action could either compute a distance, +or the center between two or more atoms, or print some value on a file. Each action supports a number of keywords, +whose value is specified. Action names are highlighted in green and, clicking on them, you can go to the +corresponding page in the manual that contains a detailed description for each keyword. +Actions that support the keyword `STRIDE` are those that determine how frequently things are to be done. +Notice that the default value for `STRIDE` is always 1. In the example above, omitting `STRIDE` keywords +the corresponding COLVAR files would have been written for every frame of the analyzed trajectory. +All the other actions in the example above do not +support the `STRIDE` keyword and are only calculated when requested. That is, `d` will be computed +every 10 frames, and `phi1` and `phi2` every 100 frames. +In short, you can think that for every snapshot in the trajectory that you are analyzing PLUMED +is going to execute all the listed actions, though some of them are optimized out when `STRIDE` is different from 1. + +Variables should be given a name (in the example above, `d`, `phi1`, and `phi2`), which is +then used to refer to these variables. +Lists of atoms should be provided as +comma separated numbers, with no space. Virtual atoms can be created and assigned a name for later use. + +You can find more information on the PLUMED syntax +at \ref Syntax page of the manual. The complete documentation for all the supported +collective variables can be found at the \ref colvarintro page. + +\section lugano-1-ex Exercises + + +\subsection lugano-1-ex-1 Exercise 1: Computing and printing simple collective variables + +To analyze the trajectories provided here, you should: +- Create a PLUMED input file with a text editor (let us call it `plumed.dat`) similar to the one above. +- Run the command `plumed driver --mf_xtc traj.xtc --plumed plumed.dat`. + +Here `traj.xtc` is the trajectory that you want to analyze. Notice that \ref driver +can read multiple file formats using embedded molfile plugins from VMD (that's where the `mf` letters come from). + +Notice that you can also visualize trajectories with VMD directly. Trajectory `traj-whole.xtc` can be visualized with +the command `vmd GB1_native.pdb traj-whole.xtc`. + +In this exercise, we will make practice with computing and printing collective variables. + + +\subsection lugano-1-ex-2 Exercise 2: MOLINFO shortcuts + +In the previous sections we have seen how we can use PLUMED to calculate distances and how by plotting these distances we can begin to simplify the +high dimensional data contained in a trajectory. Obviously, calculating a \ref DISTANCE is not always the best way to simplify the information contained +in a trajectory and we often find we have to work with other more-complex quantities. PLUMED thus started as a library that was used to gather all the various +implementations people had written for different collective variables (CVs) that people had used to "analyze" trajectories over the years (analyze is in +inverted commas here because, as you will see if you continue to use PLUMED, we use CVs to do much more than simply analyze trajectories). +Now we will not have time to go over all the quantities that can be calculated in this tutorial. Once you understand the basic principles, however, you +should be able to use the manual to work out how to calculate other quantities of interest. With this in mind then lets learn how to calculate +a \ref TORSION. As with \ref DISTANCE the atoms that we specify in our \ref TORSION command can be real or virtual. In the example below two +real atoms and a virtual atom are used: + +\verbatim +first: CENTER ATOMS=1-6 +last: CENTER ATOMS=251-256 +cvtor: TORSION ATOMS=first,102,138,last + +PRINT ARG=cvtor STRIDE=1 FILE=COLVAR + +ENDPLUMED +\endverbatim + +Copy this input to a PLUMED input file and use it to analyze the trajectory you downloaded at the start of this exercise by using the commands +described in section \ref lugano-1-introinput then plot the CV output using gnuplot. + +As you can hopefully see calculating \ref TORSION values and other CVs is no more difficult than calculating \ref DISTANCE values. In fact it is +easier as generally when you calculate the torsion angles of a protein you often wish to calculate particular, named torsion angles (i.e. the \f$\phi\f$ and \f$\psi\f$ +angles). The \ref MOLINFO command makes it particularly easy to do this. For instance suppose that you want to calculate and print the \f$\phi\f$ angle +in the sixth residue of the protein and the \f$\psi\f$ angle in the eighth residue of the protein. You can do so using the following input: + +\verbatim +MOLINFO STRUCTURE=template.pdb +phi6: TORSION ATOMS=@phi-6 +psi8: TORSION ATOMS=@psi-8 +PRINT ARG=phi6,psi8 FILE=colvar +\endverbatim + +Copy this input to a PLUMED input file and use it to analyze the trajectory you downloaded at the start of this exercise by using the commands +described in section \ref lugano-1-introinput then plot the CV output using gnuplot. Notice that you will need the template.pdb file you downloaded +at the start of this exercise in order for this to run. + + +\subsection lugano-1-ex-3 Exercise 3: Virtual atoms + +When calculating many collective variables it is useful to not think in terms of calculating them directly based on the positions of a number of atoms. +It is useful to instead think of them as being calculated from the position of one or more virtual atoms whose positions are generated based on the position +of a collection of other atoms. For example you might want to calculate the distance between the center of masses of two molecules. In this case it is useful +to calculate the two positions of the centers of mass first and to then calculate the distance between the centers of mass. The PLUMED input that you would use +for such a calculation reflects this way of thinking. An example of a PLUMED input that can be used to perform this sort of calculation is shown below: + +\verbatim + +# geometric center of mass of first residue +first: CENTER ATOMS=1,2,3,4,5,6,7,8 +# geometric center of last residue +last: CENTER ATOMS=427-436 + +d1: DISTANCE ATOMS=first,last +d2: DISTANCE ATOMS=first,last NOPBC + +PRINT ARG=d1,d2 STRIDE=1 FILE=COLVAR + +ENDPLUMED +\endverbatim + +Make a PLUMED input containing the above input and execute it on the trajectory `traj-broken.xtc` by making use of the following command: + +\verbatim +plumed driver --mf_xtc traj-broken.xtc --plumed plumed.dat +\endverbatim + +Before we turn to analyzing what is output from this calculation there are a few things to note about this input file. Firstly, I should describe what this file +instructs PLUMED to do. It tells PLUMED to: + +1. calculate the position of the Virtual Atom 'first' as the \ref CENTER of atoms from 1 to 8; +2. calculate the position of the Virtual Atom 'last' as the \ref CENTER of atoms from 427 to 436; +3. calculate the distance between the two atoms 'first' and 'last' and saves it in 'd1'; +4. calculate the distance (ignoring periodic boundary conditions) between the two atoms 'first' and 'last' and saves it in 'd2'; +5. print the content of 'd1' and 'd2' in the file COLVAR for every frame of the trajectory + +Notice that in the input above we have used two different ways of writing the atoms used in the \ref CENTER calculation: + +1. ATOMS=1,2,3,4,5,6,7,8 is the explicit list of the atoms we need +2. ATOMS=427-436 is the range of atoms needed + +Notice also that ranges of atoms can be defined with a stride which can also be negative as shown by the commands below, which are both equivalent: + +3. ATOMS=from,to:by (i.e.: 427-436:2) +4. ATOMS=to,from:-by (i.e.: 436-427:-2) + +Lets now return to the business of analyzing what was output by the calculation. Lets begin by looking at the contents of the COLVAR file that was output. +When you do so you should find that the first few lines of this file read: + +\verbatim +#! FIELDS time e2edist comdist + 0.000000 2.516315 2.464043 +\endverbatim + +Lets now plot contents of the COLVAR file so we can compare the behavior of the distance between the +centers of the mass of the two terminal residues in this trajectory, with and without accounting for periodic boundary conditions. To plot this data +issue the following commands: + +\verbatim +gnuplot +p 'COLVAR' u 1:2 w l, '' u 1:3 w l +\endverbatim + +Given what you observe for the behavior of these two distance what do you now expect to see in the trajectory? Let's look at the trajectory to see if +we are right. To look at the trajectory issue the following commands: + +\verbatim +vmd template.pdb trajectory-short.xyz +\endverbatim + +\subsection lugano-1-ex-4 Exercise 4: Taking care of periodic boundary conditions + + +\subsection lugano-1-ex-5 Exercise 5: Using CVs that measure the distance from a reference conformation + + +\subsection lugano-1-ex-6 Exercise 6: Creating your own CV directly in the PLUMED input file + + + + +*/ + +link: @subpage lugano-1 + +description: This tutorial explains the syntax of the PLUMED input file and how to use PLUMED to analyze CVs + +additional-files: lugano-1