OFF file format specification (written by Jason Swails, 2/20/2011): This document describes the format of Amber OFF library files. You may look at any of the .lib/.off files in $AMBERHOME/dat/leap/lib as examples. Each section of the OFF file is begun with "!!". This document is arranged such that sections are separated by lines of "++++". An example line is given and each element of the line is described in more detail under "Description:". This will also typically tell you how many of those records appear in that section. Key: RES = residue or unit name -- it is specified in each context AN = atom name AT = atom type ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !!index array str "RES" Description: list of all UNITs defined in the OFF file. "RES" - UNIT name ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !!entry.RES.unit.atoms table str name str type int typex int resx int flags int seq int elmnt dbl chg "AN" "AT" typex resx flags sequence element charge Description: (one line for each ATOM in the unit) "AN" - Atom Name "AT" - Atom Type typex - atom type index (unused, so always set to 0) resx - residue number flags - this is a hexadecimal number in which each attribute is either a 1, 2, 4, or 8 such that simple bitwise operations can be used to test for a certain attribute's existence. These attributes are used only by LEaP and changed throughout the course of your LEaP session as you perform various actions (for instance, if you select an atom). The attributes are listed below with their hexadecimal ``yes'' value indicated in parentheses next to it. o posfxd : position fixed (0x00400000) o posblt : position built (0x00800000) o posdrwn : position drawn (0x01000000) o selected : is atom selected (0x00000001) o pert : is atom perturbed (0x00000002) o notdisp : is atom not displayed (0x00000004) o touched : is atom ``touched'' (0x00010000, 0x00200000) (2 different ways of ``touching'') o posknwn : position is known (0x00020000) o internal : position is in internal coordinates (0x00040000) o needsmin : requires minimization (0x00080000) o needsbuild : needs to be built (0x00100000) In OFF files, all flags are turned off except the known position, since the OFF files specify a coordinate for every position. In this case, the hexidecimal value of "int flags" is 0x00020000, which in decimal format is 131072. Since GIBBS has largely been deprecated, perturbed prmtop files are not typically created. seq - which number this atom is in the residue's sequence (sequence restarts for each residue in the unit) elmnt - atomic number of the atom's element chg - partial atomic charge ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.atomspertinfo table str pname str ptype int ptypex int pelmnt dbl pchg "AN" "AT" ptypex pelmnt pchg Description: (one line for each ATOM in the unit) "AN" - atom name that the atom is perturbed to "AT" - atom type that the atom is perturbed to ptypex - index of atom type it is perturbed to pelmnt - element that atom is perturbed to pchg - partial charge atom is perturbed to Previously for GIBBS, if you wanted to make some kind of mutation (i.e. mutate an asparagine to an aspartate), this section would have to describe how each atom changed in going from one unit to the "new" one (for instance, an amine N would change into a carboxylate O for asparagine -> aspartate). Because this is not used by sander, this section is largely filled with dummy variables (as indicated by the fact that the "pert" flag in the section above is set to "off") ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.boundbox array dbl boundbox - 1 if the unit is bound by a box, -1 if the unit is not bound by a box angle - angle of the box length - dimension of the box in the x-coordinate length - dimension of the box in the y-coordinate length - dimension of the box in the z-coordinate Description: (5 lines per UNIT) This section has 5 double-precision floats. The first is 1 if this unit DOES have box information (for instance a solvent box), and is -1 if it does NOT have box information (for instance amino acid or nucleic acid residues). The second is the angle of the box (typically 90 deg. for rectangular boxes). The next 3 values are the x, y, and z dimensions of the box. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.childsequence single int ChildSequence - which residue number the next "residue" will be Description: (1 line in each UNIT) This section has a single integer, and it will be 1 greater than the number of residues in the unit. For a unit that is only a single residue (i.e. amino or nucleic acid), it will always be 2. For a solvent box with 216 solvent residues, it will be 217. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.connect array int connect0 connect1 Description: (2 lines in each UNIT) This section gives the atom number of the "head" and "tail" atom of the unit. connect0 ("head") is the atom that is bonded to the unit before it (the connect1 of that unit). The connect1 ("tail") is the atom that is bonded to the unit after it (the connect0 of that unit). If there is no connect0 and/or connect1 atom, that value is simply set to 0. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.connectivity table int atom1x int atom2x int flags atom1x atom2x flag Description: (one line for each BOND in the unit) atom1x - the atomic index of the first atom involved in the bond (the *first* atom is the one with the smaller index). atom2x - the atomic index of the second atom involved in the bond (the *second* atom is the one with the larger index). flag - bond order of the indicated bond (I believe). Bond order is not used for anything inside sander/pmemd; only bond lengths, strengths, etc. are used to define the topology. The bond order may be used for some preliminary "minimization" carried out by LEaP itself. However, this appears not to be used very much at all for its intended purpose, and all of the standard Amber OFF files simply have ``1'' for all of its flags. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.hierarchy table str abovetype int abovex str belowtype int belowx abovetype abovex belowtype belowx Description: (one line for each RESIDUE in the unit + one line for each ATOM in each RESIDUE) This section defines the hierarchy of each part of the unit. In LEaP, the natural hierarchy that's used is UNITs contain RESIDUEs contain ATOMs. In a hierarchical food-chain, UNITs are on top (above everything else), RESIDUEs are below UNITs, and ATOMs are below RESIDUEs. abovetype - The ``type'' of object ("U"nit or "R"esidue) that is one *up* on the hierarchical foodchain than the current object. Note that since "A"toms are on the bottom, they can never be here abovex - ``above index''; the index of which object the current one belongs to (for instance, which residue number this atom belongs to) belowtype - Which object type *this* object is ("R"esidue or "A"tom). Note that because "U"nits are on the top, they can never be here. belowx - ``below index''; which object number this is in its current container object (for instance, which atom number this atom is in its corresponding residue or which residue number this is in the unit) Note that every residue has the same container, or "abovetype": "U"nit 0. Every atom is contained within a "R"esidue, but each unit can have several residues. Thus, for a residue the "abovetype" is "U" and "belowtype" is "R" (because the belowtype is the actual type this object is, not what comes *below* it). For an atom, the "abovetype" is "R" and "belowtype" is "A". ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.name single str "RES" "RES" - unit name Description: (one line per UNIT) This section simply lists the name of the unit. The unit name is really only useful in LEaP to query the description of various parts of this unit. The topology file does not store the unit name, just the residue names (they are typically the same for single-residue units). ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.positions table dbl x dbl y dbl z x y z Description: (One for each ATOM of the unit) x - x-coordinate of the atom y - y-coordinate of the atom z - z-coordinate of the atom ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.residueconnect table int c1x int c2x int c3x int c4x int c5x int c6x c1x c2x c3x c4x c5x c6x Description: (one line per UNIT) c1x - 1st connection atom c2x - 2nd connection atom c3x - 3rd connection atom c4x - 4th connection atom c5x - 5th connection atom c6x - 6th connection atom This section lists all of the atoms that connect to other units. c1x is the HEAD atom (connect0). c2x is the TAIL atom (connect1). Some residues connect to *other* residues besides just the two neighboring ones. The most common example is the CYX residue, which is a cysteine residue involved in a disulfide bond (forming a cystine residue). In this case, c3x will be the S atom involved in the disulfide bond. ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.residues table str name int seq int childseq int startatomx str restype int imagingx "RES" seq childseq startatomx restype imagingx Description: (one line per RESIDUE) "RES" - residue name seq - which residue it is in the UNIT sequence (from 1 to nres) childseq - after how many ATOMS the next residue starts (number of atoms in residue + 1) startatomx - start atom index; which atom number does this residue start on (1st residue starts at 1) restype - is it a "p"rotein residue, "n"ucleic acid residue, "w"ater residue, or "?"unknown residue imagingx - imaging index; unused in current Amber versions (not quite sure what it used to do either) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.solventcap array dbl hascap dim1 dim2 dim3 dim4 Description: (5 lines per UNIT) hascap - double that shows if the residue has a solvent cap (1) or does not have a solvent cap (-1) dim1-4 - Solvent cap dimensions are defined by 4 numbers (angle and 3-D lengths like the box section maybe) All of the standard library files in the Amber distribution have no cap (hascap = -1.0000 and dim1-4 = 0.0) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ !entry.RES.unit.velocities table dbl x dbl y dbl z v_x v_y v_z Description: (1 per ATOM in unit) v_x - x-component of initial velocities v_y - y-component of initial velocities v_z - z-component of initial velocities ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++