Selection exporters
Selection exporters allow you to write a selection of atoms to a file that can be read by another program.
Writing selections
Single AtomGroup
The typical situation is that one has an
AtomGroup
and wants to work with the
same selection of atoms in a different package, for example, to
visualize the atoms in VMD.
In [1]: import MDAnalysis as mda
In [2]: from MDAnalysis.tests.datafiles import PDB
In [3]: u = mda.Universe(PDB)
In [4]: ag = u.select_atoms('resname ALA')
As with a normal structure file, use AtomGroup.write
method with the appropriate file extension.
ag.write("ala_selection.vmd", name="alanine")
In VMD, sourcing the file ala_selection.vmd
(written in Tcl) defines the “macro” alanine
that contains the atom indices to select.
source ala_selection.vmd
set sel [atomselect top alanine]
and in the GUI the macro appears in the Selections: Singlewords as “alanine”.
window in the listNames are not always required; if name
is not passed to AtomGroup.write
, MDAnalysis defaults to “mdanalysis001”, “mdanalysis002”, and so on.
Multiple selections
AtomGroup.write
can take additional keyword arguments, including mode
. The default is mode='w'
, which will overwrite the provided filename. If mode='a'
, the selection is appended to the file.
u.select_atoms('resname T*').write('residues.ndx',
name='TYR_THR',
mode='a')
u.select_atoms('resname GLY').write('residues.ndx',
name='GLY',
mode='a')
u.select_atoms('resname PRO').write('residues.ndx',
name='PRO',
mode='a')
Looking at this GROMACS index file, we see:
$ gmx make_ndx -n residues.ndx
Command line:
gmx make_ndx -n residues.ndx
Going to read 1 old index file(s)
Counted atom numbers up to 3341 in index file
0 TYR_THR : 301 atoms
1 GLY : 141 atoms
2 PRO : 140 atoms
nr : group '!': not 'name' nr name 'splitch' nr Enter: list groups
'a': atom '&': and 'del' nr 'splitres' nr 'l': list residues
't': atom type '|': or 'keep' nr 'splitat' nr 'h': help
'r': residue 'res' nr 'chain' char
"name": group 'case': case sensitive 'q': save and quit
'ri': residue index
Alternatively, you can direcly use the selection writer itself as a context manager and write each AtomGroup
inside the context. For example:
with mda.selections.gromacs.SelectionWriter('residues.ndx', mode='w') as ndx:
ndx.write(u.select_atoms('resname T*'),
name='TYR_THR')
ndx.write(u.select_atoms('resname GLY'),
name='GLY')
And again, you can append to the file with mode='a'
:
with mda.selections.gromacs.SelectionWriter('residues.ndx', mode='a') as ndx:
ndx.write(u.select_atoms('resname PRO'),
name='PRO')
Reading in selections
Currently, MDAnalysis doesn’t support reading in atom selections. However, there are other tools that can read files from other programs, such as GromacsWrapper.