[chimera-dev] writing atom information using the mol2 atom order.
Eric Pettersen
pett at cgl.ucsf.edu
Tue Nov 3 10:11:58 PST 2009
Hi JD,
One typically takes the list of atoms, sorts them, and then runs
through the sorted list. Like this:
atoms = molecule.atoms
atoms.sort(lambda a1, a2: cmp(a1.serialNumber, a2.serialNumber))
for atom in atoms:
etc.
--Eric
Note that 'molecule.atoms' always returns a copy of the atom list, so
you can't do this:
molecule.atoms.sort(blah)
for atom in molecule.atoms:
because the first line sorted a _copy_ of the atom list, and the
second line returns another copy of the original (unsorted) list.
On Nov 3, 2009, at 6:20 AM, Jean Didier Pie Marechal wrote:
> Dear all,
>
> I have a mol2 file and I would like to generate an input for an
> external program using chimera. For a great ease in practicability,
> I would like the mol2 order to be kept.
>
> I used the following artefact to get to what I want:
> def input(molecule):
> ##for compatibility with mol2 atom ordering I use the doble loop
> as follow
> ##makes the writing substantially slower, but yet the
> compatibility with mol2 format seems absolute.
> for i in range(len(molecule.atoms)):
> for atoms in molecule.atoms:
> if atoms.serialNumber == i:
> text=str(atoms.element)+"-"+str(atoms.gaffType)
> +"-"+str(atoms.charge)+" "+str(atoms.flex)+"
> "+str(atoms.coord()) +"\n"
> filename.write(text)
> i=i+1
>
> I think I could order directly the writing in function of the
> serialNumber (which is preserved regarding the mol2) file. But how
> could I do this?
>
> Best,
> JD
More information about the Chimera-dev
mailing list