Author: bugman
Date: Fri Jan 16 17:49:01 2009
New Revision: 8499
URL: http://svn.gna.org/viewcvs/relax?rev=8499&view=rev
Log:
Started to redesign add_struct() to remove the struct_index arg and convert to
the new model design.
The API base class function get_model() has been added to return or create the
desired model. The
add_struct() method has been renamed to add_molecule(). Much work remains to
be done.
Modified:
branches/multi_structure/generic_fns/structure/api_base.py
branches/multi_structure/generic_fns/structure/geometric.py
branches/multi_structure/generic_fns/structure/internal.py
Modified: branches/multi_structure/generic_fns/structure/api_base.py
URL:
http://svn.gna.org/viewcvs/relax/branches/multi_structure/generic_fns/structure/api_base.py?rev=8499&r1=8498&r2=8499&view=diff
==============================================================================
--- branches/multi_structure/generic_fns/structure/api_base.py (original)
+++ branches/multi_structure/generic_fns/structure/api_base.py Fri Jan 16
17:49:01 2009
@@ -62,22 +62,19 @@
self.structural_data = ModelList()
- def add_struct(self, name=None, model=None, file=None, path=None,
str=None, struct_index=None):
- """Prototype method stub for adding the given structure to the store.
-
- @keyword name: The structural identifier.
+ def add_molecule(self, name=None, model=None, file=None, path=None,
str=None):
+ """Prototype method stub for adding the given molecule to the store.
+
+ @keyword name: The molecule identification string.
@type name: str
- @keyword model: The structural model.
+ @keyword model: The number of the model to add the molecule to.
@type model: int or None
- @keyword file: The name of the file containing the structure.
+ @keyword file: The name of the file containing the molecule.
@type file: str
@keyword path: The optional path where the file is located.
@type path: str
- @keyword str: The object containing the structural data.
- @type str: Structure_container instance
- @keyword struct_index: The index of the structural container, used
for replacing the
- structure.
- @type struct_index: int or None.
+ @keyword str: The molecule object, containing the structural
data.
+ @type str: class instance
"""
# Raise the error.
@@ -232,6 +229,43 @@
warn(RelaxWarning("The structure file " + `self.file[i]` +
" cannot be found in the current directory or the directory of the results
file."))
+ def get_model(self, model):
+ """Return or create the model.
+
+ @param model: The model number.
+ @type model: int or None
+ @return: The ModelContainer corresponding to the model number
or that newly created.
+ @rteyp: ModelContainer instance
+ """
+
+ # Check if the target is a single model.
+ if model == None and self.num_models() > 1:
+ raise RelaxError, "The target model cannot be determined as there
are %s models already present." % self.num_modes()
+
+ # No model specified.
+ if model == None:
+ # Create the first model, if necessary.
+ if self.num_models():
+ self.structural_data.add_item()
+
+ # Alias the first model.
+ model_cont = self.structural_data[0]
+
+ # The model has been specified.
+ else:
+ # Get the preexisting model.
+ found = False
+ for model_cont in self.structural_data:
+ if model_cont.num == model:
+ found = True
+ break
+
+ # Add the model if it doesn't exist.
+ if not found:
+ self.structural_data.add_item(model)
+ model_cont = self.structural_data[-1]
+
+
def load_pdb(self, file_path, read_mol=None, set_mol_name=None,
read_model=None, set_model_num=None, verbosity=False):
"""Prototype method stub for loading structures from a PDB file.
Modified: branches/multi_structure/generic_fns/structure/geometric.py
URL:
http://svn.gna.org/viewcvs/relax/branches/multi_structure/generic_fns/structure/geometric.py?rev=8499&r1=8498&r2=8499&view=diff
==============================================================================
--- branches/multi_structure/generic_fns/structure/geometric.py (original)
+++ branches/multi_structure/generic_fns/structure/geometric.py Fri Jan 16
17:49:01 2009
@@ -181,7 +181,7 @@
structure = Internal()
# Add a structure.
- structure.add_struct(name='diff_tensor')
+ structure.add_molecule(name='diff_tensor')
# Loop over the pipes.
for pipe_index in xrange(len(pipe_list)):
@@ -351,7 +351,7 @@
structure = Internal()
# Add a structure.
- structure.add_struct(name='vector_dist')
+ structure.add_molecule(name='vector_dist')
# Initialise the residue and atom numbers.
res_num = 1
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=8499&r1=8498&r2=8499&view=diff
==============================================================================
--- branches/multi_structure/generic_fns/structure/internal.py (original)
+++ branches/multi_structure/generic_fns/structure/internal.py Fri Jan 16
17:49:01 2009
@@ -53,12 +53,12 @@
id = 'internal'
- def add_struct(self, name=None, model=None, file=None, path=None,
str=None, struct_index=None):
+ def add_molecule(self, name=None, model=None, file=None, path=None,
str=None):
"""Add the given structure to the store.
@keyword name: The structural identifier.
@type name: str
- @keyword model: The structural model.
+ @keyword model: The number of the model to add the molecule to.
@type model: int or None
@keyword file: The name of the file containing the structure.
@type file: str
@@ -66,13 +66,19 @@
@type path: str
@keyword str: The object containing the structural data.
@type str: Structure_container instance
- @keyword struct_index: The index of the structural container, used
for replacing the
- structure.
- @type struct_index: int or None.
- """
+ """
+
+ # Check if the target is a single model.
+ if model == None and self.num_models() > 1:
+ raise RelaxError, "The target model cannot be determined as there
are %s models already present." % self.num_modes()
+
+ # Get the model.
+ model_cont = self.get_model(model)
+
+ # Check that the name does not already exist.
# Some checks.
- if struct_index != None:
+ if model != None:
# Index check.
if struct_index >= self.num:
raise RelaxError, "The structure index of " + `struct_index` +
" cannot be more than the total number of structures of " + `self.num` + "."
_______________________________________________
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