Closed GoogleCodeExporter closed 9 years ago
Original comment by joseph.g...@gmail.com
on 20 Sep 2010 at 1:51
This is related to Issue 10.
Maybe we can introduce "named selections"?
# ... as above
L0 = L.atoms(0) # produces an AtomGroup
L0.name = "leaflet_0" # assign a name (or use the CHARMM-like "L0.define"?)
res0 = u.selectAtoms("byres [leaflet_0]") # new syntax for a named selection
The Universe/AtomGroup.selectAtoms() method should also get a new keyword
argument name='selection_name'. If this is set (or a non-None value is assigned
to the AtomGroup.name) then we should store the selection in a *global*
(weak-ref) dictionary. In this way it will also become possible to do
selections between different universes.
Original comment by orbeckst
on 21 Sep 2010 at 10:41
I'm a little unclear on how you would like to do selections between different
universes. Currently AtomGroups are simply collections of the atom indices in
the structure file. So you could only consistently apply an AtomGroup from one
Universe to another if the underlying structure file is the same (ie the same
number and ordering of atoms between groups - basically between separate
trajectory files). Is this what you mean?
Original comment by naveen.m...@gmail.com
on 28 Sep 2010 at 2:37
rom a user's perspective it would make sense to load, say, all solved
structures of a enzyme, generating a list of universes, and then asking for the
coordinates of the active site residues in order to compute an 'average
picture' of the active site:
multiverse = [Universe(pdb, name=pdb) for pdb in pdbfiles] # name each
universe
selection = " or ".join(["universe %s" % pdb for pdb in pdbfiles]) # select any
universe
selA = "resid 31 and ( " + selection + " )"
selB = "resid 111 and ( " + selection + " )"
selC = "resid 391 and ( " + selection + " )"
u = multiverse[0]
resA = u.selecAtoms(selA) # just use any universe to access multiverse; resA
= mixed AtomGroup
avgA = resA.coordinates().mean(axis=0) # average coordinates of active site
residue A across all pdbs
...
Or: I run simulation A of a protein, and B is a homologous protein with a
ligand. I fit trajectory B so that the protein superimposes, so everything is
happening in the same region of space. Now I want to find all residues in A
that are within a certain distance of a cutoff in order to define the binding
site in A based on my knowledge of B.
The example is a bit contrived but that's essentially what I mean. I suppose
the main use would be distance-based selections. But I remember using VMD and
occasionally being annoyed that I cannot use properties of one molecule to look
for something in the other.
Example for doing a selection from an arbitrary ATomGroup:
Artificial example:
opep = u.selectAtoms("name OW and around 4.0 name N", name="opep") # water
oxygens near peptide bond
wpep = u.selectAtoms("byres selection opep") # introduce new 'selection'
keyword to refer to named AtomGroup
and/or
opep = u.selectAtoms("name OW and around 4.0 name N") # water oxygens near
peptide bond
wpep = opep.selectAtoms("byres self") # maybe use special 'self' keyword to
refer to the group itself
wpep should be an AtomGroup containing all atoms in the water molecules having
an oxygen with 4.0 Å to any N atom.
This should work for any given AtomGroup, which can be generated without ever
going through the selection parser.
Original comment by orbeckst
on 28 Sep 2010 at 2:48
Maybe we leave this issue concerned with selections from arbitrary atom groups
and open another one for the "multiverse" selections.
Original comment by orbeckst
on 28 Sep 2010 at 2:49
A workaround to get all residues for a give group of Atoms is to use the new
AtomGroup.residues attribute, which lists all residues that contain at least
one of the atoms in the group (available since r488).
from MDAnalysis import Universe
u = Universe(pdb, xtc)
PO4 = u.AtomSelect("name PO4")
resPO4 = PO4.residues
Original comment by orbeckst
on 15 Oct 2010 at 12:56
Using the OO hierarchy for groups goes some way to alleviate the problem;
anything else requires a major investment of coding so we leave it as won't fix
– if anyone really wants any of the features discussed here then please open
a new issue with the desired specifications.
Original comment by orbeckst
on 13 Sep 2011 at 3:28
Original issue reported on code.google.com by
joseph.g...@gmail.com
on 20 Sep 2010 at 1:51