[Chimera-users] Selection through bond and fragment naming
Jean Didier Pie Marechal
JeanDidier.Marechal at uab.cat
Mon Mar 14 13:44:20 PDT 2011
Dear all,
thanks a lot for your answers. I seem to have a problem though.
When running the script, one way or another I always ends up with something like:
a.residue.removeAtom(a)
AttributeError: 'NoneType' object has no attribute 'removeAtom'
AttributeError: 'NoneType' object has no attribute 'removeAtom'
File "M:\REUNIONS\dibuixos\Manipulate_structure\newres.py", line 20, in <module>
a.residue.removeAtom(a)
See reply log for Python traceback.
I think I got the origin of the problem but can't figure out how to solve it.
What I observed is that, before running the script if I do the following after selecting my atoms:
>>> for a in at:
print a.residue
I have the following list printed
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
but doing the same AFTER having run the script gives :
None
UNK 1
UNK 1
UNK 1
UNK 1
UNK 1
...
It seems like the residue type of the first atom disappeared.
Any clue?
all the best,
JD
Dr. Jean-Didier Maréchal
Lecturer
The Computational Biotechnological Chemistry Team
Unitat de Química Física
Departament de Química
Universitat Autònoma de Barcelona
Edifici C.n.
08193 Cerdanyola (Barcelona)
Tel: +34.935814936
e-mail: JeanDidier.Marechal at uab.es
www: http://asklipio.qf.uab.es
----- Missatge original -----
De: Eric Pettersen <pett at cgl.ucsf.edu>
Data: Divendres, Març 11, 2011 8:29 pm
Assumpte: Re: [Chimera-users] Selection through bond and fragment naming
> On Mar 11, 2011, at 7:42 AM, Jean Didier Pie Marechal wrote:
>
> > Hi,
> >
> > I have a system from which I only have xyz coordinates. What I
> would
> > like to do is to define myself residue attribute on different
> > fragments of the molecules. Could you tell me how (or if there is
> a
> > way to ):
> >
> > 1. expand a selection to bonding atoms (i.e. I click on one atom
> and
> > expand selection through one bond after each actions) This would
> be
> > of the easiest way for me to select the fragments I want to.
>
> Hi JD,
> My only idea as to how to do this is with a short Python script:
>
> from chimera.selection import currentAtoms, addCurrent
> addAtoms = set()
> for a in currentAtoms():
> addAtoms.update(a.neighbors)
> addCurrent(addAtoms)
>
> You could then use the open command to run it:
>
> open <script folder location (e.g. ~marechal/scripts)>/expand.py
>
> which you could short to "xp" with the alias command:
>
> alias ^xp open blah-blah/expand.py
>
> >
> > 2. set a residue attribute to the given selected fragment. I
> think I
> > remember how to do so in scripting, but what is the command line
> to
> > do so?
>
> So, do you really want to set a residue-level attribute, or do you
> want to organize the selected atoms into a residue? Setting a
> residue-
> level attribute for the atoms is easy:
>
> setattr r myAttrName my-attr-val sel
>
> Organizing the atoms into a residue again requires Python, and not
> as
> simple a script as for your first question, e.g.:
>
> # script designed to run under "runscript" command, therefore has
> an
> "arguments" variable available...
> try:
> rname, rnum = arguments
> except ValueError:
> raise chimera.UserError("must supply residue name and number
> arguments")
>
> try:
> rnum = int(rnum)
> except ValueError:
> raise chimera.UserError("residue number (second arg) must be an
> integer")
>
> atoms = chimera.selection.currentAtoms()
> if not atoms:
> raise chimera.UserError("No atoms selected")
>
> # make a new residue
> newRes = atoms[0].molecule.newResidue(rname, "A", rnum, ' ')
>
> # withdraw atoms from their current residues
> for a in atoms:
> a.residue.removeAtom(a)
> if len(a.residue.atoms) == 0:
> a.molecule.deleteResidue(a.residue)
>
> # add atoms to new residue
> for a in atoms:
> newRes.addAtom(a)
>
> So you would run this script with the command "runscript blah-
> blah/
> newres.py TYR 1", which could again be shorted using aliasing:
>
> alias ^nr runscript blah-blah/newres.py $1 $2
>
> --Eric
>
>
> Eric Pettersen
> UCSF Computer Graphics Lab
> http://www.cgl.ucsf.edu
>
>
>
More information about the Chimera-users
mailing list