Hi Warren,

        PyMOL's PDB handling is an attempt to navigate a minefield of
incompatible standards which exist in the conventions of various
software packages.

Ugh. I know more about incompatable PDB files than I ever wanted to. I once wrote something much like Andrew Dalke's UPDB (see http://biopython.org/scriptcentral/). Unfortunately, my version ended up being very slow, so I didn't get a chance to give it to the biopython folks. I keep meaning to go back and speed it up, but I think they have a good PDB parser now.

        Since version 0.90, PyMOL's behavior has changed.  Nowadays,
your input data:

<snip>

Would be returned as:
<snip>

...which does preserve atom names, but not the order.  Note that
white-space in the atom names is not preserved (an inherent limitation
in PyMOL -- significant white-space within identifier is hell on users
and parsers).
Conventionally, atom names of length 3 or less are placed in the second
column, not the first -- so your "LMN " atom may cause trouble.

That's fine with me. I just had "LMN " and " XYZ" in there so that I could figure out exactly what PyMOL was changing.

Also note that by some conventions, "2OA2" in a PDB file really means
atom "OA22".

I didn't know that.  What conventions are those?

Furthermore, in your example, they [ATOM IDs] are not unique (a mistake?).

yup, a mistake.

However, I am trying to bend PyMOL around to meet your needs a bit
better.

Towards this end, I've created a new setting "pdb_retain_ids" which
preserves the original PDB serial numbers in the output file.

In future PyMOL versions, so long as

set retain_order, 1
set pdb_retain_ids, 1
set pdb_no_end_record, 1

That's absolutely fantastic. Right now, I have to use PyMOL, MOE and AMBER (sander and carnal are the real problems) on the same systems, and anything that makes this less painful is great! I'll probably set retain_order and pdb_retain_ids in my .pymolrc.py and upgrade to the CVS version within the next couple of days.
Thanks!

-michael
--
michael lerner


Reply via email to