Author: bugman
Date: Fri Jan 16 16:57:01 2009
New Revision: 8498
URL: http://svn.gna.org/viewcvs/relax?rev=8498&view=rev
Log:
Support for models vs. molecules and the elimination of struct_index in
bond_vectors().
Modified:
branches/multi_structure/generic_fns/structure/internal.py
Modified: branches/multi_structure/generic_fns/structure/internal.py
URL:
http://svn.gna.org/viewcvs/relax/branches/multi_structure/generic_fns/structure/internal.py?rev=8498&r1=8497&r2=8498&view=diff
==============================================================================
--- branches/multi_structure/generic_fns/structure/internal.py (original)
+++ branches/multi_structure/generic_fns/structure/internal.py Fri Jan 16
16:57:01 2009
@@ -485,7 +485,7 @@
break
- def bond_vectors(self, atom_id=None, attached_atom=None,
struct_index=None, return_name=False, return_warnings=False):
+ def bond_vectors(self, atom_id=None, attached_atom=None, model_num=None,
return_name=False, return_warnings=False):
"""Find the bond vector between the atoms of 'attached_atom' and
'atom_id'.
@keyword atom_id: The molecule, residue, and atom identifier
string. This must
@@ -493,16 +493,16 @@
@type atom_id: str
@keyword attached_atom: The name of the bonded atom.
@type attached_atom: str
- @keyword struct_index: The index of the structure to return the
vectors from. If not
- supplied and multiple structures/models
exist, then vectors from
- all structures will be returned.
- @type struct_index: None or int
+ @keyword model_num: The model of which to return the vectors
from. If not supplied
+ and multiple models exist, then vectors
from all models will be
+ returned.
+ @type model_num: None or int
@keyword return_name: A flag which if True will cause the name
of the attached atom to
be returned together with the bond vectors.
@type return_name: bool
@keyword return_warnings: A flag which if True will cause warning
messages to be returned.
@type return_warnings: bool
- @return: The list of bond vectors for each
structure.
+ @return: The list of bond vectors for each model.
@rtype: list of numpy arrays (or a tuple if
return_name or
return_warnings are set)
"""
@@ -515,50 +515,53 @@
attached_name = None
warnings = None
- # Loop over the structures.
- for i in xrange(self.num):
- # Single structure.
- if struct_index and struct_index != i:
+ # Loop over the models.
+ for model in self.structural_data:
+ # Single model.
+ if model_num and model_num != model.num:
continue
- # Alias.
- struct = self.structural_data[i]
-
- # Init.
- atom_found = False
-
- # Loop over all atoms.
- for j in xrange(len(struct.atom_name)):
- # Skip non-matching atoms.
- if sel_obj and not sel_obj.contains_spin(struct.atom_num[j],
struct.atom_name[j], struct.res_num[j], struct.res_name[j], self.name[i]):
+ # Loop over the molecules.
+ for mol in model.mol:
+ # Skip non-matching molecules.
+ if sel_obj and not sel_obj.contains_mol(mol.mol_name):
continue
- # More than one matching atom!
+ # Init.
+ atom_found = False
+
+ # Loop over all atoms.
+ for j in xrange(len(struct.atom_name)):
+ # Skip non-matching atoms.
+ if sel_obj and not
sel_obj.contains_spin(struct.atom_num[j], struct.atom_name[j],
struct.res_num[j], struct.res_name[j], self.name[i]):
+ continue
+
+ # More than one matching atom!
+ if atom_found:
+ raise RelaxError, "The atom_id argument " + `atom_id`
+ " must correspond to a single atom."
+
+ # The atom has been found, so store some info.
+ atom_found = True
+ index = j
+
+ # Found the atom.
if atom_found:
- raise RelaxError, "The atom_id argument " + `atom_id` + "
must correspond to a single atom."
-
- # The atom has been found, so store some info.
- atom_found = True
- index = j
-
- # Found the atom.
- if atom_found:
- # Get the atom bonded to this structure/molecule/residue/atom.
- bonded_num, bonded_name, element, pos, attached_name, warnings
= self.__bonded_atom(attached_atom, index, i)
-
- # No bonded atom.
- if (bonded_num, bonded_name, element) == (None, None, None):
- continue
-
- # The bond vector.
- vector = array(pos, float64) - array([struct.x[index],
struct.y[index], struct.z[index]], float64)
-
- # Append the vector to the vectors array.
- vectors.append(vector)
-
- # Not found.
- else:
- warnings = "Cannot find the atom in the structure"
+ # Get the atom bonded to this model/molecule/residue/atom.
+ bonded_num, bonded_name, element, pos, attached_name,
warnings = self.__bonded_atom(attached_atom, index, i)
+
+ # No bonded atom.
+ if (bonded_num, bonded_name, element) == (None, None,
None):
+ continue
+
+ # The bond vector.
+ vector = array(pos, float64) - array([struct.x[index],
struct.y[index], struct.z[index]], float64)
+
+ # Append the vector to the vectors array.
+ vectors.append(vector)
+
+ # Not found.
+ else:
+ warnings = "Cannot find the atom in the structure"
# Build the tuple to be yielded.
data = (vectors,)
_______________________________________________
relax (http://nmr-relax.com)
This is the relax-commits mailing list
[email protected]
To unsubscribe from this list, get a password
reminder, or change your subscription options,
visit the list information page at
https://mail.gna.org/listinfo/relax-commits