Subject: RANToid:RFC: pdb ; perl ; cgi-bin ; a MD box initial state build question

From: root <[email-masked]>
Date: Thu, 22 Jan 1998 17:37:13 +0300 (MSK)

Dear CCLers,

I am slowly catching up with that treasure trove of information contained
in the archives, however -- I may well be mistaken -- but the interactive
webform-driven aspects of cgi-bin perl script pdb generation are not very
well covered. 

As, for personal-belief and for financial reasons both I am sticking to
freely obtainable software, some apparently simple problems must
(un?)necessarily appear nontrivial (which is worsened by my lack of
experience in the field, and the unavailability (but then I think I saw at
least two different CCL search hits from my own domain...) of local
experts -- Please help me, Obi Wan!  ;) 

>From all free parallel MD software I tested so far, I finally decided to
stick to EGO: 

  ftp://ftp.imo.physik.uni-muenchen.de/pub/ego/
  http://www.imo.physik.uni-muenchen.de/tavan/molgroup/ego_manual/manual.html

NAMD does still appear interesting (I'll sure come back to check later,
esp. NAMD2), particularly its advanced features like DMTA, the
video-game-like ;) VMD/NAMD coupling, but, perhaps unjustified, I found it
less easy to use. (Btw, those of you who are eying DIY DSP-fueled MD
systems, should definitely check out Helmut Heller's (1993) Ph.D. work
(which, afaik, is unfortunately only available in German), as it contains
yummy details about doing MD on a 60-node 4 MByte/node DIY Inmos
Transputer box).

Well, I got somewhat sidetracked, and my X-PLOR(online) is not up yet, so
I still cannot pdb2psf, but I got a nice visual feedback by VMD replaying
a DMD generated from a demo dataset (bovine trypsine inhibitor) that comes
bundled with EGO. The in vacuo protein in question was small (cat pti.pdb
| grep 'ATOM ' | wc claims 568 ATOMs), but I could render roughly half a
nanosecond worth of trajectory in (probably much) less than 24 h on a
measly single-node AMD K6/200 (roughly 400 BogoMIPS), which is not exactly
known for its float performance being stellar. (Them remote Indys ain't
that either, the PVM's still not quite right, the network topology is
distintly suboptimal, and I'll soon break down, and start crying ;).

Helmut Heller (very helpful, thanks Helmut!) published a phospholipid
modeler's basic survival kit of hydrated phospholipid coordinates (both
initial (fake crystal), and final (well-equilibrated) state) at: 

  ftp://ftp.imo.physik.uni-muenchen.de/pub/membrane/

(Anybody knows, where to obtain Terry Stouch's relatively recent
(dimyristoylphoshatidylcholine) set?). Unfortunately, these are neutral
lipids, while my work is supposed to be about polycation-induced (btw,
polyelectrolyte MD also many CCL search hits do not make) lateral
segregation. What to do? Well, my first idea was just cut off that pesky
choline tail of some lipids (for chaperoning sake, interdigitating them
with neutral ones), and compensate one of the negative charges with, say,
Na+.  I think this can be done with X-PLOR (which is, imho, quite an
intimidating package), RasMol, or a one-time (perl) script. What is your
personal preference?

Another (demented) idea was to build a coordinate set de novo. I believe I
already mentioned Daylight's SMILES strings (which, apart from being
constructable manually, e.g. using the interactive web form depict
facility) can be easily drawn using Gasteiger's Cactvs suite (csed), and
sent to Corina

  http://schiele.organik.uni-erlangen.de/cactvs/index.html

(1 k free structures for everybody!) via email for an overnight crunch,

  http://schiele.organik.uni-erlangen.de/services/3d.html

the results (hopefully) arriving in the morning mail. Maybe complicated,
but it works for me. Alas, the coordinate come trivially minimalized,
which, especially in case of phospholipids is definitely not what I want.
Any ideas about how to rotate individual bonds, maybe (dream on)
interactively?

Next step to be taken, is building a lipid bilayer from above lego blocks
(Helmut used Quanta, which afair is not free). I was thinking about
writing tlate-x <x-spacing>, tlate-y <y-spacing>, and mirror-z <z>,
then maybe strip-tip3p (RasMol can do this), and fuse-pdb (fusing two
coordinate sets into one), maybe starting with Will Ware's work here:

http://world.std.com/~wware/

(he has a link to some nifty subpage illustrating his early
structure-building (gcl & scheme) Lisp code buried there somewhere),
porting it to Emacs' elisp (which would weird out too many people), or,
better, to perl, which would have the nice cgi-bin synergy. What do you
think of this scheme? Got perhaps even pointers to ready code?

There is some fortran utility (compiles with f77, also, after updating
several packages with RedHat's fort77 (which is a front-end to f2c)) which
comes bundled with EGO, which can cubic-primitive-packing-entomb a
molecule in a slab of water. (I've had some rewarding chiselling erosion
experiments with a simple text editor, by killing a range of TIP3's, and
according CONECT entries). 

The only thing short of absolute bliss would be a salt script, which
mutates a provided number of waters into, say, Na+Cl- pairs. Easy in perl,
again.

Well, this mail has certainly gotten much longer than I ever intended,
while I have not yet covered everything. Anyway, what are your comments?
Ideas? Flames?

Thanks for listening so long,
Regards,
Eugene Leitl, MSU, Polym. Sci. Dept.

P.S.

To do some advertisement for perl/cgi-bin (which I can't dig yet, having
bought 'Learning Perl' just few days ago):

Here you can watch the (trivially simple) demo perl script in action:

  http://liposome.genebee.msu.su/cgi-bin/test

If your MIME-aware web browser is correctly configured, it should spawn a
pdb viewer (currently, I use RasMol, which can cope nicely even with the
largest boxes supplied by Helmut) upon visiting the url.  While the
example is certainly silly, modifying it to make perl spit out dynamically
generated pdb appears doable, and worthwhile. 

The trivially simple perl script (put the thing at below into your local
cgi-bin, and fiddle with it):  ftp://liposome.genebee.msu.su/pub/perl/test

#!/usr/bin/perl -w
# this Corina-generated pdb file should call RasMol, correct MIME conf.
# provided

print <<END_of_Multiline_Text;
Content-type: chemical/x-pdb

HEADER    root\@liposome.genebee.msu.su[12/07/97 03:01:05]:A_XYZ/1 root 1
AUTHOR    Wolf-Dietrich Ihlenfeldtroot   2
ATOM      1  N           0      -0.018   1.465   0.010  0.00  0.00 root 3
ATOM      2  C           0       0.002  -0.004   0.002  0.00  0.00 root 4
ATOM      3  H           0      -1.021  -0.381   0.010  0.00  0.00 root 5
ATOM      4  C           0       0.718  -0.497  -1.257  0.00  0.00 root 6

[ ..diverse deletia..; also notice the backslash behind @ in the HEADER ]

CONECT  246  236  247  248    0                                    root 593
CONECT  247  246    0    0    0                                    root 594
CONECT  248  246  421    0    0                                    root 595
END                                                                root 596

END_of_Multiline_Text