
Hi Patrick, Here's some Python code that illustrates making atoms. It copies a Chimera molecule (taken from chimera/share/PDBmatrices/copymolecule.py). Tom Patrick Ladam wrote:
Hello to the list, I start trying to write my first py code in chimera (not that easy without too much doc strings) and have a first question to submit.
Here is what I am doing in IDLE:
import chimera opened = chimera.openModels.open('1zik.pdb')
mol = opened[0] for i in mol.atoms:
print i.name
N CA CB CG CD .../...
# Now I want to instanciate an atom and set its name attribute:
at1=chimera.Atom at1.name="BC1" print at1.name
BC1
# Now I redo the previous loop:
for i in mol.atoms:
print i.name
BC1 BC1 BC1 BC1 BC1 BC1 BC1 BC1 BC1 BC1 BC1 BC1 .../...
They're all BC1!!!
How come ? My created atom 'at1' and my 'mol' are supposed to be completely seperated objects no?
Can someone help, I am afraid I missed something really basic here... Bye to all _______________________________________________ Chimera-dev mailing list Chimera-dev@cgl.ucsf.edu http://www.cgl.ucsf.edu/mailman/listinfo/chimera-dev
# ----------------------------------------------------------------------------- # def copy_molecule(m): import chimera cm = chimera.Molecule() for attr in ('name', 'openedAs'): if hasattr(m, attr): setattr(cm, attr, getattr(m,attr)) if hasattr(m, 'pdbHeaders'): cm.setAllPDBHeaders(m.pdbHeaders) rmap = {} for r in m.residues: cr = cm.newResidue(r.type, r.id) cr.isHelix = r.isHelix cr.isSheet = r.isSheet cr.isTurn = r.isTurn rmap[r] = cr amap = {} for a in m.atoms: ca = cm.newAtom(a.name, a.element) ca.setCoord(a.coord()) ca.altLoc = a.altLoc if hasattr(a, 'bfactor'): ca.bfactor = a.bfactor amap[a] = ca cr = rmap[a.residue] cr.addAtom(ca) for b in m.bonds: a1, a2 = b.atoms cm.newBond(amap[a1], amap[a2]) return cm