MMTSB is documented: find it here. I would suggest looking at the description of each command you are using it, while you are using it.
Setting up environment/testing
PLEASE NOTE: These remote machines are using the tcsh shell (your OS X machine is using the bash shell unless you changed it!).
Make sure things are set up properly:
- type "which mdCHARMM.pl" at the prompt. if the response is "/usr/local/mmtsb_toolset/perl/mdCHARMM.pl", everything is OK.
- type 'rexinfo.pl" at the prompt. if the response is "cannot read condition file at /usr/local/mmtsb_toolset/perl/ReXServer.pm line 210.", everything is OK.
Transferring files
Whether you want to send a pdb file TO the remote machine, or get one BACK from the remote machine, you will need to use 'scp'. scp stands for "secure copy". The general format of the command is
$ scp local-file user@remote-machine:path
or
$ scp user@remote-machine:path/remote-file local-directory
So let's say you have the file 1RSV.pdb in your current directory on your PC, and you wish to put it in your VMD directory on the remote machine. The command would be
$ scp 1RSV.pdb user@remote-machine:VMD
If you have the file trajectory.dat in your VMD/data/ directory on the remote machine, and you want to put it in your current working directory locally, the command would be
$ scp user@remote-machine:VMD/data/trajectory.dat .
(recall that "." means "current directory")
(for all of these commands, you will first get an authentication/fingerprint message—it is OK to acquiesce to this—then you will have to enter your remote password for each command).
Basic MMTSB commands
Let's say you want to generate some protein sequence that does not exist yet (hence, there is no experiment, no structure saved to the RCSB). Or, you have a sequence which does have some experiments and/or structures available, but you'd like to mutate it or modify it. Of course it is possible to generate a structure for any primary sequence you wish, but common simulation packages such as CHARMM or AMBER require much low-level knowledge of the archaic programming. MMTSB makes the previously-arduous task of creating a simulation-ready set of files much simpler. Using MMTSB, the steps are:
- Generate a sequence
- connect the residues and generate a low-resolution coordinate set
- randomly place side-chain coordinates
- write out PDB (and PSF) files
Generating a sequence
Generating a sequence is easy using one- or three-letter codes. Basically, you feed the sequence of your choice to the genseq.pl script. An easy way to do this is with a redirect (the ">" operator in a shell):
$ genseq.pl -one > output.seq
{enter sequence here with one letter codes, no spaces}
{hit control-d to close input}
The redirect operator will create a file (here named "output.seq"). You will use this redirect command quite often! Don't forget it! For example:
[Landau:~/Documents/Classes/181 IMS] mccallum% genseq.pl -one > tmp.seq
AGGKLCCQ
{control-d}
[Landau:~/Documents/Classes/181 IMS] mccallum% cat tmp.seq
1 ALA 1 1
2 GLY 1 1
3 GLY 1 1
4 LYS 1 1
5 LEU 1 1
6 CYS 1 1
7 CYS 1 1
8 GLN 1 1
[Landau:~/Documents/Classes/181 IMS] mccallum%
The output file (in red) is in MONSSTER sequence format. This is a bare-bones starting point for further development. It is also possible to read a sequence from a PDB:
[Landau:~/Documents/Classes/181 IMS] mccallum% genseq.pl peptideB.pdb
1 ALA 1 1
2 ALA 1 1
3 ALA 1 1
4 ALA 1 1
5 ALA 1 1
6 CYS 1 1
7 ALA 1 1
8 ALA 1 1
9 ALA 1 1
10 ALA 1 1
(because there is no redirect at the end of the command, the MONSSTER sequence file is simply spat out to standard output (the terminal)).
It is possible that you have the sequence in a file. For example, if that file is called sequence.one, you would issue this command:
$ genseq.pl -one sequence.one > sequence.seq
Connecting residues and creating backbone
Assuming that you wish to create a random positioning of side chains, MMTSB allows you to do this by using a lattice to specify positions, using genchain.pl.
[Landau:~/Documents/Classes/181 IMS] mccallum% genchain.pl -g 100 -rnd 10
12
34 40 47
38 41 47
41 43 46
45 45 46
47 48 48
50 50 50
52 52 52
55 53 55
57 54 57
60 56 59
61 58 61
62 61 64
The output is called a MONSSTER chain file, and the numbers are positions on a grid (usually you will use this with a redirect to put the result into a file, say "filename.chain"). This becomes useful in the next step.
Writing out data: PDB and PSF
Now we put the two MONSSTER pieces together to create a skeleton PDB:
[Landau:~/Documents/Classes/181 IMS] mccallum% rebuild.pl tmp.seq tmp.chain
ATOM 1 N ALA 1 0.603 1.202 4.695 0.00 0.00
ATOM 2 CA ALA 1 0.408 -0.163 4.943 0.00 0.00
ATOM 3 C ALA 1 -1.013 -0.633 4.797 0.00 0.00
ATOM 4 O ALA 1 -1.858 0.096 4.617 0.00 0.00
ATOM 5 CB ALA 1 0.827 -0.510 6.363 0.00 0.00
ATOM 6 N ALA 2 -1.804 -1.333 5.188 0.00 0.00
ATOM 7 CA ALA 2 -2.576 -2.519 5.125 0.00 0.00
ATOM 8 C ALA 2 -3.260 -2.660 3.840 0.00 0.00
ATOM 9 O ALA 2 -3.347 -2.143 3.455 0.00 0.00
ATOM 10 CB ALA 2 -3.636 -2.520 6.216 0.00 0.00
ATOM 11 N GLY 3 -4.042 -3.064 3.166 0.00 0.00
ATOM 12 CA GLY 3 -4.439 -3.638 2.000 0.00 0.00
ATOM 13 C GLY 3 -3.358 -3.812 0.983 0.00 0.00
ATOM 14 O GLY 3 -2.713 -4.652 1.034 0.00 0.00
ATOM 15 N LYS 4 -3.106 -3.388 -0.055 0.00 0.00
ATOM 16 CA LYS 4 -2.119 -3.067 -0.966 0.00 0.00
ATOM 17 C LYS 4 -1.070 -2.390 -0.190 0.00 0.00
ATOM 18 O LYS 4 -0.939 -1.657 -0.276 0.00 0.00
ATOM 19 CB LYS 4 -2.674 -2.146 -2.054 0.00 0.00
ATOM 20 CG LYS 4 -3.813 -2.751 -2.858 0.00 0.00
ATOM 21 CD LYS 4 -3.323 -3.884 -3.745 0.00 0.00
ATOM 22 CE LYS 4 -3.351 -5.214 -3.008 0.00 0.00
ATOM 23 NZ LYS 4 -2.855 -6.330 -3.859 0.00 0.00
ATOM 24 N GLN 5 0.755 -2.954 0.326 0.00 0.00
ATOM 25 CA GLN 5 0.669 -2.010 1.429 0.00 0.00
ATOM 26 C GLN 5 0.851 -0.628 0.803 0.00 0.00
ATOM 27 O GLN 5 -0.117 -0.044 0.340 0.00 0.00
ATOM 28 CB GLN 5 1.764 -2.290 2.461 0.00 0.00
ATOM 29 CG GLN 5 1.887 -1.227 3.540 0.00 0.00
ATOM 30 CD GLN 5 2.264 0.131 2.980 0.00 0.00
ATOM 31 OE1 GLN 5 3.340 0.298 2.405 0.00 0.00
ATOM 32 NE2 GLN 5 1.378 1.105 3.147 0.00 0.00
ATOM 33 N CYS 6 1.802 0.059 0.947 0.00 0.00
ATOM 34 CA CYS 6 2.280 1.291 0.365 0.00 0.00
ATOM 35 C CYS 6 2.650 1.132 -1.103 0.00 0.00
ATOM 36 O CYS 6 2.767 2.117 -1.825 0.00 0.00
ATOM 37 CB CYS 6 3.528 1.783 1.102 0.00 0.00
ATOM 38 SG CYS 6 3.184 2.706 2.619 0.00 0.00
ATOM 39 N LEU 7 3.169 0.644 -1.940 0.00 0.00
ATOM 40 CA LEU 7 3.265 -0.263 -2.968 0.00 0.00
ATOM 41 C LEU 7 2.341 -1.437 -2.683 0.00 0.00
ATOM 42 O LEU 7 2.638 -2.241 -1.943 0.00 0.00
ATOM 43 CB LEU 7 4.701 -0.774 -3.099 0.00 0.00
ATOM 44 CG LEU 7 5.375 -1.240 -1.807 0.00 0.00
ATOM 45 CD1 LEU 7 5.915 -0.053 -1.025 0.00 0.00
ATOM 46 CD2 LEU 7 4.386 -1.983 -0.922 0.00 0.00
ATOM 47 N THR 8 1.259 -1.447 -3.688 0.00 0.00
ATOM 48 CA THR 8 0.371 -2.580 -3.625 0.00 0.00
ATOM 49 C THR 8 -0.053 -3.000 -5.025 0.00 0.00
ATOM 50 O THR 8 0.233 -2.321 -5.974 0.00 0.00
ATOM 51 CB THR 8 -0.901 -2.257 -2.820 0.00 0.00
ATOM 52 OG1 THR 8 -0.561 -1.445 -1.689 0.00 0.00
ATOM 53 CG2 THR 8 -1.560 -3.536 -2.327 0.00 0.00
ATOM 54 N ALA 9 -1.457 -3.344 -5.405 0.00 0.00
ATOM 55 CA ALA 9 -1.905 -4.701 -5.590 0.00 0.00
ATOM 56 C ALA 9 -3.007 -4.771 -6.638 0.00 0.00
ATOM 57 O ALA 9 -3.586 -3.756 -6.984 0.00 0.00
ATOM 58 CB ALA 9 -2.451 -5.261 -4.285 0.00 0.00
ATOM 59 N ALA 10 -4.189 -5.927 -6.226 0.00 0.00
ATOM 60 CA ALA 10 -4.395 -6.846 -7.316 0.00 0.00
ATOM 61 C ALA 10 -5.849 -7.291 -7.385 0.00 0.00
ATOM 62 O ALA 10 -6.591 -7.105 -6.437 0.00 0.00
ATOM 63 CB ALA 10 -3.527 -8.082 -7.137 0.00 0.00
TER
END
Loose ends (hydrogens)
Do you see anything wrong with this PDB file? (once again, best used with a redirect to put the result into a file). The hydrogens are missing! This is not really a problem. It turns out that because hydrogen atoms are so small and lightweight, they do little in simulation terms but provide blocked valences/and end to branching. For this reason, it is very easy to add hydrogens. In fact, this is one of the things that MMTSB will do automatically and generically with other operations. We can see this when we minimize the structure:
mccallum@dirac ~/Res]$ minCHARMM.pl tmp.pdb
ATOM 1 N ALA 1 -1.348 0.514 4.536 1.00 0.00 PRO0
ATOM 2 HT1 ALA 1 -0.743 -0.041 3.875 1.00 0.00 PRO0
ATOM 3 HT2 ALA 1 -1.060 1.507 4.480 1.00 0.00 PRO0
Here we see two new hydrogen atoms of type "HT".
There is another way to attach hydrogens which doesn't change the already-present coordinates. The command complete.pl (without arguments) will add hydrogen atoms:
complete.pl input.pdb > output-with-H.pdb
complete.pl is also capable of reconstructing all missing atoms in a skeleton PDB, as long as all the alpha carbon (CA) atoms are present.
A brief word on minimization. Minimization is an energetic process where atoms are moved to purely lower energy states. This is mostly moving atoms which are too close (or even superimposed) away from each other. This is in contrast to regular molecular dynamics, which is allowed to increase or decrease the energy, according to the forces/accelerations and positions of the atoms. Minimization is always the first step once you have created a new structure, or are preparing a structure for simulation. This can be illustrated by calculating the energy before and after a minimization:
mccallum@dirac ~/Res]$ enerCHARMM.pl tmp.pdb
34381499.4910
[mccallum@dirac ~/Res]$ minCHARMM.pl tmp.pdb > tmp-minimized.pdb
[mccallum@dirac ~/Res]$ enerCHARMM.pl tmp-minimized.pdb
-54.4653
As with many things in UNIX, this could all be accomplished in one line, with a semicolon (which allows you to issue sequential commands on one line) and a pipe "|":
[mccallum@dirac ~/Res]$ enerCHARMM.pl 1anv.pdb; minCHARMM.pl 1anv.pdb | enerCHARMM.pl
327014418.2500
338.2033