[prev in list] [next in list] [prev in thread] [next in thread] 

List:       relax-devel
Subject:    Re: r13249 - in /branches/xyz: generic_fns/structure/main.py prompt/structure.py test_suite/system_t
From:       Han Sun <hasu () domain ! hid>
Date:       2011-06-28 9:16:05
Message-ID: EAF9CB69-F46C-4A36-BB49-6C80C946B134 () domain ! hid
[Download RAW message or body]

Hi Edward,

ok, thanks!

Best,
Han

On Jun 28, 2011, at 11:06 AM, Edward d'Auvergne wrote:

> Hi Han,
>
> It looks like you accidentally had a change in the file
> generic_fns/structure/main.py prior to the reversion, so that it was
> included in the commit as well :S  This make things more difficult!
> You'll first have to revert the new r13249 and commit.  Then try the
> reversion of r13246 a second time.  This could make it interesting
> when I try to bring this xyz branch back into the main line, the
> svnmerge program might not quite understand what is happening.  That's
> ok though, I'll be able to handle that problem if it arises.
>
> Cheers,
>
> Edward
>
>
> On 28 June 2011 10:25,  <hasu@domain.hid> wrote:
>> Author: han87
>> Date: Tue Jun 28 10:25:55 2011
>> New Revision: 13249
>>
>> URL: http://svn.gna.org/viewcvs/relax?rev=13249&view=rev
>> Log:
>> Reverted r13246 as different approach will be used.
>>
>> The command used was:
>> svn merge -r 13246:13239 .
>>
>> The new function vectors_xyz() in the /prompt/structure.py is not  
>> needed. The current code will be fixed for xyz file format  
>> suggested in https://mail.gna.org/public/relax-devel/2011-06/ 
>> msg00244.html.
>>
>> Modified:
>>    branches/xyz/generic_fns/structure/main.py
>>    branches/xyz/prompt/structure.py
>>    branches/xyz/test_suite/system_tests/structure.py
>>
>> Modified: branches/xyz/generic_fns/structure/main.py
>> URL: http://svn.gna.org/viewcvs/relax/branches/xyz/generic_fns/ 
>> structure/main.py?rev=13249&r1=13248&r2=13249&view=diff
>> ===================================================================== 
>> =========
>> --- branches/xyz/generic_fns/structure/main.py (original)
>> +++ branches/xyz/generic_fns/structure/main.py Tue Jun 28 10:25:55  
>> 2011
>> @@ -609,6 +609,140 @@
>>         raise RelaxError("No vectors could be extracted.")
>>
>>
>> +def vectors_xyz(spin_id1=None, spin_id2=None, model=None,  
>> verbosity=1, ave=True, unit=True):
>> +    """Extract the bond vectors from the loaded structures and  
>> store them in the spin container.
>> +
>> +    @keyword attached:      The spin identifier string of the  
>> atom 1.
>> +    @type attached:         str
>> +    @keyword spin_id:       The spin identifier string of the  
>> atom 2.
>> +    @type spin_id:          str
>> +    @keyword model:         The model to extract the vector  
>> from.  If None, all vectors will be
>> +                            extracted.
>> +    @type model:            str
>> +    @keyword verbosity:     The higher the value, the more  
>> information is printed to screen.
>> +    @type verbosity:        int
>> +    @keyword ave:           A flag which if True will cause the  
>> average of all vectors to be
>> +                            extracted.
>> +    @type ave:              bool
>> +    @keyword unit:          A flag which if True will cause the  
>> function to calculate the unit
>> +                            vectors.
>> +    @type unit:             bool
>> +    """
>> +
>> +    # Test if the PDB file has been loaded.
>> +    if not hasattr(cdp, 'structure'):
>> +        raise RelaxPdbError
>> +
>> +    # Test if sequence data is loaded.
>> +    if not exists_mol_res_spin_data():
>> +        raise RelaxNoSequenceError
>> +
>> +    # Print out.
>> +    if verbosity:
>> +        # Number of models.
>> +        num_models = cdp.structure.num_models()
>> +
>> +        # Multiple models loaded.
>> +        if num_models > 1:
>> +            if model:
>> +                print(("Extracting vectors for model '%s'." %  
>> model))
>> +            else:
>> +                print(("Extracting vectors for all %s models." %  
>> num_models))
>> +                if ave:
>> +                    print("Averaging all vectors.")
>> +
>> +        # Single model loaded.
>> +        else:
>> +            print("Extracting vectors from the single model.")
>> +
>> +        # Unit vectors.
>> +        if unit:
>> +            print("Calculating the unit vectors.")
>> +
>> +    # Loop over the spins.
>> +    no_vectors = True
>> +    for spin1, mol_name1, res_num1, res_name1 in spin_loop 
>> (selection=spin_id1, full_info=True):
>> +        # Skip deselected spins.
>> +        if not spin.select:
>> +            continue
>> +
>> +        # The spin identification string.  The residue name and  
>> spin num is not included to allow molecules with point mutations  
>> to be used as different models.
>> +        id1 = generate_spin_id(res_num1=res_num1, res_name1=None,  
>> spin_num1=res_num1)
>> +
>> +        # Test that the spin number or name are set (one or both  
>> are essential for the identification of the atom).
>> +        if spin.num == None and spin.name == None:
>> +            warn(RelaxWarning("Either the spin number or name  
>> must be set for the spin " + repr(id) + " to identify the  
>> corresponding atom in the molecule."))
>> +            continue
>> +
>> +        # The bond vector already exists.
>> +        if hasattr(spin, object_name):
>> +            obj = getattr(spin, object_name)
>> +            if obj:
>> +                warn(RelaxWarning("The bond vector for the spin "  
>> + repr(id) + " already exists."))
>> +                continue
>> +
>> +        # Get the bond info.
>> +        bond_vectors, attached_name, warnings =  
>> cdp.structure.bond_vectors(attached_atom=attached,  
>> model_num=model, res_num=res_num, spin_name=spin.name,  
>> return_name=True, return_warnings=True)
>> +
>> +        # No attached atom.
>> +        if not bond_vectors:
>> +            # Warning messages.
>> +            if warnings:
>> +                warn(RelaxWarning(warnings + " (atom ID " + repr 
>> (id) + ")."))
>> +
>> +            # Skip the spin.
>> +            continue
>> +
>> +        # Set the attached atom name.
>> +        if not hasattr(spin, 'attached_atom'):
>> +            spin.attached_atom = attached_name
>> +        elif spin.attached_atom != attached_name:
>> +            raise RelaxError("The " + repr(spin.attached_atom) +  
>> " atom already attached to the spin does not match the attached  
>> atom " + repr(attached_name) + ".")
>> +
>> +        # Initialise the average vector.
>> +        if ave:
>> +            ave_vector = zeros(3, float64)
>> +
>> +        # Loop over the individual vectors.
>> +        for i in xrange(len(bond_vectors)):
>> +            # Unit vector.
>> +            if unit:
>> +                # Normalisation factor.
>> +                norm_factor = norm(bond_vectors[i])
>> +
>> +                # Test for zero length.
>> +                if norm_factor == 0.0:
>> +                    warn(RelaxZeroVectorWarning(id))
>> +
>> +                # Calculate the normalised vector.
>> +                else:
>> +                    bond_vectors[i] = bond_vectors[i] / norm_factor
>> +
>> +            # Sum the vectors.
>> +            if ave:
>> +                ave_vector = ave_vector + bond_vectors[i]
>> +
>> +        # Average.
>> +        if ave:
>> +            vector = ave_vector / float(len(bond_vectors))
>> +        else:
>> +            vector = bond_vectors
>> +
>> +        # Set the vector.
>> +        setattr(spin, object_name, vector)
>> +
>> +        # We have a vector!
>> +        no_vectors = False
>> +
>> +        # Print out of modified spins.
>> +        if verbosity:
>> +            print(("Extracted " + spin.name + "-" + attached_name  
>> + " vectors for " + repr(id) + '.'))
>> +
>> +    # Right, catch the problem of missing vectors to prevent  
>> massive user confusion!
>> +    if no_vectors:
>> +        raise RelaxError("No vectors could be extracted.")
>> +
>> +
>>  def write_pdb(file=None, dir=None, model_num=None, force=False):
>>     """The PDB writing function.
>>
>>
>> Modified: branches/xyz/prompt/structure.py
>> URL: http://svn.gna.org/viewcvs/relax/branches/xyz/prompt/ 
>> structure.py?rev=13249&r1=13248&r2=13249&view=diff
>> ===================================================================== 
>> =========
>> --- branches/xyz/prompt/structure.py (original)
>> +++ branches/xyz/prompt/structure.py Tue Jun 28 10:25:55 2011
>> @@ -686,76 +686,6 @@
>>         generic_fns.structure.main.vectors(attached=attached,  
>> spin_id=spin_id, model=model, verbosity=verbosity, ave=ave,  
>> unit=unit)
>>
>>
>> -    def vectors_xyz(self, spin_id1=None, spin_id2=None,  
>> model=None, verbosity=1, ave=True, unit=True):
>> -        """Extract and store the bond vectors from the loaded  
>> structures in the spin container.
>> -
>> -        Keyword arguments
>> -        ~~~~~~~~~~~~~~~~~
>> -
>> -        spin_id1:  The spin identification string of the spin 1.
>> -
>> -        spin_id2:  The spin identification string of the spin 2.
>> -
>> -        model:  The model to extract bond vectors from (which if  
>> set to None will cause the vectors
>> -        of all models to be extracted).
>> -
>> -        verbosity:  The amount of information to print to  
>> screen.  Zero corresponds to minimal
>> -        output while higher values increase the amount of  
>> output.  The default value is 1.
>> -
>> -        ave:  A flag which if True will cause the bond vectors  
>> from all models to be averaged.  If
>> -        vectors from only one model is extracted, this argument  
>> will have no effect.
>> -
>> -        unit:  A flag which if True will cause the unit vector to  
>> calculated rather than the full
>> -        length bond vector.
>> -
>> -
>> -        Description
>> -        ~~~~~~~~~~~
>> -
>> -        For a number of types of analysis, bond vectors or unit  
>> bond vectors are required for the
>> -        calculations.  This user function allows these vectors to  
>> be extracted from the loaded
>> -        structures. The bond vector will be that from the two  
>> atoms of a xyz file loaded in relax.
>> -
>> -        The extraction of vectors can occur in a number of ways.   
>> For example if an NMR structure
>> -        with N models is loaded or if multiple molecules, from  
>> any source, of the same compound are
>> -        loaded as different models, there are three options for  
>> extracting the bond vector.  Firstly
>> -        the bond vector of a single model can be extracted by  
>> setting the 'model' argument.
>> -        Secondly the bond vectors from all models can be  
>> extracted if 'model' is None and 'ave' is
>> -        set to False.  Thirdly, if 'model' is None and 'ave' is  
>> set to True, then a single vector
>> -        which is the average for all models will be calculated.
>> -
>> -
>> -        Example
>> -        ~~~~~~~
>> -
>> -        To extract a vector of two atoms from xyz file, type:
>> -
>> -        relax> structure.vectors(spin_id1='#SSS-cluster4-new- 
>> test_mol1@domain.hid', spin_id1='#SSS-cluster4-new-test_mol1@domain.hid')
>> -        """
>> -
>> -        # Function intro text.
>> -        if self._exec_info.intro:
>> -            text = self._exec_info.ps3 + "structure.vectors("
>> -            text = text + "spin_id1=" + repr(spin_id1)
>> -            text = text + ", spin_id2=" + repr(spin_id2)
>> -            text = text + ", model=" + repr(model)
>> -            text = text + ", verbosity=" + repr(verbosity)
>> -            text = text + ", ave=" + repr(ave)
>> -            text = text + ", unit=" + repr(unit) + ")"
>> -            print(text)
>> -
>> -        # The argument checks.
>> -        arg_check.is_str(spin_id1, 'spin_identification_string',  
>> can_be_none=True)
>> -        arg_check.is_str(spin_id2, 'spin identification string',  
>> can_be_none=True)
>> -        arg_check.is_int(model, 'model', can_be_none=True)
>> -        arg_check.is_int(verbosity, 'verbosity level')
>> -        arg_check.is_bool(ave, 'average vector flag')
>> -        arg_check.is_bool(unit, 'unit vector flag')
>> -
>> -        # Execute the functional code.
>> -        generic_fns.structure.main.vectors_xyz(spin_id1=spin_id1,  
>> spin_id2=spin_id2, model=model, verbosity=verbosity, ave=ave,  
>> unit=unit)
>> -
>> -
>>     def write_pdb(self, file=None, dir=None, model_num=None,  
>> force=False):
>>         """The PDB writing function.
>>
>>
>> Modified: branches/xyz/test_suite/system_tests/structure.py
>> URL: http://svn.gna.org/viewcvs/relax/branches/xyz/test_suite/ 
>> system_tests/structure.py?rev=13249&r1=13248&r2=13249&view=diff
>> ===================================================================== 
>> =========
>> --- branches/xyz/test_suite/system_tests/structure.py (original)
>> +++ branches/xyz/test_suite/system_tests/structure.py Tue Jun 28  
>> 10:25:55 2011
>> @@ -685,7 +685,3 @@
>>         # And now all the rest of the atoms.
>>         self.interpreter.structure.load_spins()
>>
>> -        # Extract a vector between first two spins.
>> -        self.interpreter.structure.vectors_xyz(spin_id1='#SSS- 
>> cluster4-new-test_mol1@domain.hid', spin_id2='#SSS-cluster4-new-test_mol1@domain.hid')
>> -        print((cdp.mol[0].res[0].spin[0]))
>> -        self.assert_(hasattr(cdp.mol[0].res[0].spin[0],  
>> 'bond_vect'))
>>
>>
>> _______________________________________________
>> relax (http://nmr-relax.com)
>>
>> This is the relax-commits mailing list
>> relax-commits@domain.hid
>>
>> 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
>>
>
> _______________________________________________
> relax (http://nmr-relax.com)
>
> This is the relax-devel mailing list
> relax-devel@domain.hid
>
> 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-devel



[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic