Mol2db2 Format 2
This page is a wishlist for features that would be nice for a new version of the flexibase file format to support. mol2db2 format features that are actually implemented so far are marked [x]
- Real Atom Types and Bond Information [x]
- Way to determine which mix-and-match conformations have clashes (and avoid trying them) [x]
- A place to store an internal energy for each possible conformation [x]
- Terminal hydrogen rotations?? [x]
- Aliphatic ring movements?
- support for clusters of conformations
- group tagging (needed for covalent docking) and basic set of covalent groups
- specified rigid component override (and better rules for finding non-ring rigid components)
- per molecule pKa
the following represents the current plan for the file format
- T type information (implicitly assumed)
- M molecule (only 5 lines ever)
- A atoms
- B bond
- X xyz
- R rigid xyz for matching (can actually be any xyzs)
- G group
- D group-conf mapping
- C conformation
- S sets
- E end of molecule
T ## namexxxx (implicitly assumed to be the standard 7) M zincname protname #atoms #bonds #xyz #groups #confs #sets M charge polar_solv apolar_solv total_solv surface_area M smiles M longname M best_dud_energy A stuff about each atom, 1 per line B stuff about each bond, 1 per line X coordnum atomnum confnum x y z G groupnum #lines #children_total G groupnum linenum #children childgroup [until column is full] D groupnum #lines #confs_total D groupnum linenum #confs confnum [until column is full] C confnum #lines #children_total coordstart coordend C confnum linenum #children childconf [until column is full] S setnum #lines #confs_total [INPUT|MIX] broken hydrogens omega_energy S setnum linenum #confs confs [until full column] E
With the above descriptions, here is a description of the columns that are used. Format statements for python/fortran will also appear at some point. If speed/size becomes an issue this might get replaced with a binary file format.
notes: 17 children groups/group per line in current scheme. 9 children confs/group per line. 9 children confs/conf per line. 8 confs/set per line. groups/confs with no children are written out.
on the atom line, dt is dock type and co is color.
1 2 3 4 5 6 7 01234567890123456789012345678901234567890123456789012345678901234567890123456789 T ## typename M ZINCCODEX PROTCODEX ATO BON XYZXXX GRO CONFSX SETSXXXXX M +CHA.RGEX +POLAR.SOL +APOLA.SOL +TOTAL.SOL SURFA.REA M SMILESXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX M LONGNAMEXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX M +BES.TDUD A NUM NAME TYPEX DT CO +CHA.RGEX +POLAR.SOL +APOLA.SOL +TOTAL.SOL SURFA.REA B NUM ATO ATO TY X COORDNUMX ATO CONFNU +XCO.ORDX +YCO.ORDX +ZCO.ORDX G GRO #LI #CH G GRO LIN #C CGN CGN CGN CGN CGN CGN CGN CGN CGN CGN CGN CGN CGN CGN CGN CGN CGN D GRO #LIN #CONFS D GRO LINE # CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS C CONFNO #LIN #CONFS COORDSTAR COORDENDX C CONFNO LINE # CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS S SETIDXXXX #LINES #CO I C H +ENERGY.XXX S SETIDXXXX LINENO # CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS CCONFS E
the type lines following are assumed by dock unless overriden:
T 1 positive T 2 negative T 3 acceptor T 4 donor T 5 ester_o T 6 amide_o T 7 neutral
the following are the format statements for python for each line
T %2d %8s\n M %9s %9s %3d %3d %6d %3d %6d %9d\n M %+9.4f %+10.3f %+10.3f %+10.3f %9.3f\n M %77s\n M %77s\n M %+10.4f\n A %3d %-4s %-5s %2d %2d %+9.4f %+10.3f %+10.3f %+10.3f %9.3f\n B %3d %3d %3d %-2s\n X %9d %3d %6d %+9.4f %+9.4f %+9.4f\n G %3d %3d %3d\n G %3d %3d %2d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d %3d\n D %3d %4d %6d\n D %3d %4d %1d %6d %6d %6d %6d %6d %6d %6d %6d %6d\n C %6d %4d %6d %9d %9d\n C %6d %4d %1d %6d %6d %6d %6d %6d %6d %6d %6d %6d\n S %9d %6d %3d %1d %1d %1d %+11.3f\n S %9d %6d %1d %6d %6d %6d %6d %6d %6d %6d %6d\n E\n
The following are the fortran format statements
!T ## namexxxx (implicitly assumed to be the standard 7) 1000 format(2x,i2,1x,a8) !M zincname protname #atoms #bonds #xyz #groups #confs #sets 2000 format(2x,a9,1x,a9,1x,i3,1x,i3,1x,i6,1x,i3,1x,i6,1x,i9) !M charge polar_solv apolar_solv total_solv surface_area 2100 format(2x,f9.4,1x,f10.3,1x,f10.3,1x,f10.3,1x,f9.3) !M smiles or longname 2200 format(2x,a77) !M best dud energy (from old version of dock) 2300 format(2x,f10.4) !A stuff about each atom, 1 per line 3000 format(2x,i3,1x,a4,1x,a5,1x,i2,1x,i2,1x,f9.4,1x,f10.3,1x, & f10.3,1x,f10.3,1x,f9.3) !B stuff about each bond, 1 per line 4000 format(2x,i3,1x,i3,1x,i3,1x,a2) !X atomnum confnum x y z 5000 format(2x,i9,1x,i3,1x,i6,f9.4,1x,f9.4,1x,f9.4) !G groupnum #lines #children_total 6000 format(2x,i3,1x,i3,1x,i3) !G groupnum linenum #children childgroup [until column is full] 6100 format(2x,i3,1x,i3,1x,i2,1x,i3,1x,i3,1x,i3,1x,i3,1x,i3, & 1x,i3,1x,i3,1x,i3,1x,i3,1x,i3,1x,i3,1x,i3, & 1x,i3,1x,i3,1x,i3,1x,i3,1x,i3,1x,i3,1x,i3) !D groupnum #lines #confs_total 7000 format(2x,i3,1x,i4,1x,i6) !D groupnum linenum #confs confnum [until column is full] 7100 format(2x,i3,1x,i4,1x,i1,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6, & 1x,i6,1x,i6,1x,i6,1x,i6) !C confnum #lines #children_total 8000 format(2x,i6,1x,i4,1x,i6,1x,i9,1x,i9) !C confnum linenum #children childconf [until column is full] 8100 format(2x,i6,1x,i4,1x,i1,1x,i6,1x,i6,1x,i6,1x,i6,1x,i6, & 1x,i6,1x,i6,1x,i6,1x,i6) !S setnum #lines #confs_total [INPUT|MIX] broken omega_energy 9000 format(2x,i9,1x,i6,1x,i3,1x,i1,1x,i1,1x,i1,1x,f11.3) !S setnum linenum #confs confs [until full column] 9100 format(2x,i9,1x,i6,1x,i1,1x,i6,1x,i6,1x,i6,1x,i6, & 1x,i6,1x,i6,1x,i6,1x,i6) !E !E does not get a format line