mailr2899 - in /1.2: generic_fns/monte_carlo.py specific_fns/model_free.py


Others Months | Index by Date | Thread Index
>>   [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Header


Content

Posted by edward on November 30, 2006 - 11:14:
Author: bugman
Date: Thu Nov 30 11:13:59 2006
New Revision: 2899

URL: http://svn.gna.org/viewcvs/relax?rev=2899&view=rev
Log:
Ported r2893 to r2897 from the 1.3 line.

The command used was:
svn merge -r2892:2897 svn+ssh://bugman@xxxxxxxxxxx/svn/relax/1.3

This includes a number of bug fixes:
    Bug #7755 (https://gna.org/bugs/?7755).
    Bug #7890 (https://gna.org/bugs/?7890).
    Bug #7891 (https://gna.org/bugs/?7891).

The revisions also include a print out when spin systems are eliminated 
through the 'eliminate()'
user function.


Modified:
    1.2/generic_fns/monte_carlo.py
    1.2/specific_fns/model_free.py

Modified: 1.2/generic_fns/monte_carlo.py
URL: 
http://svn.gna.org/viewcvs/relax/1.2/generic_fns/monte_carlo.py?rev=2899&r1=2898&r2=2899&view=diff
==============================================================================
--- 1.2/generic_fns/monte_carlo.py (original)
+++ 1.2/generic_fns/monte_carlo.py Thu Nov 30 11:13:59 2006
@@ -22,6 +22,7 @@
 
 from copy import deepcopy
 from math import sqrt
+from Numeric import ones
 from random import gauss
 
 
@@ -306,7 +307,7 @@
         self.relax.data.sim_state[self.run] = 1
 
 
-    def select_all_sims(self, number=None, select_sim=None):
+    def select_all_sims(self, number=None, all_select_sim=None):
         """Function for setting the select flag of all simulations of all 
instances to one."""
 
         # Function type.
@@ -320,19 +321,31 @@
         num_instances = count_num_instances(self.run)
 
         # Create the selected simulation array with all simulations selected.
-        if select_sim == None:
-            select_sim = []
-            for i in xrange(number):
-                select_sim.append(1)
+        if all_select_sim == None:
+            select_sim = ones(number)
 
         # Loop over the instances.
         for instance in xrange(num_instances):
+            # Set up the selected simulation array.
+            if all_select_sim != None:
+                select_sim = all_select_sim[instance].tolist()
+
             # Set the selected simulation array.
             set_selected_sim(self.run, instance, select_sim)
 
 
-    def setup(self, run=None, number=None, select_sim=None):
-        """Function for setting up Monte Carlo simulations."""
+    def setup(self, run=None, number=None, all_select_sim=None):
+        """Function for setting up Monte Carlo simulations.
+        
+        @param run:             The name of the run.
+        @type run:              str
+        @param number:          The number of Monte Carlo simulations to set 
up.
+        @type number:           int
+        @params all_select_sim: The selection status of the Monte Carlo 
simulations.  The first
+            dimension of this matrix corresponds to the simulation and the 
second corresponds to the
+            instance.
+        @type all_select_sim:   Numeric matrix (int)
+        """
 
         # Arguments.
         self.run = run
@@ -350,10 +363,7 @@
             self.relax.data.sim_number = {}
 
         # Add the simulation number.
-        if select_sim:
-            self.relax.data.sim_number[self.run] = len(select_sim)
-        else:
-            self.relax.data.sim_number[self.run] = number
+        self.relax.data.sim_number[self.run] = number
 
         # Create the data structure 'sim_state'.
         if not hasattr(self.relax.data, 'sim_state'):
@@ -363,4 +373,4 @@
         self.relax.data.sim_state[self.run] = 1
 
         # Select all simulations.
-        self.select_all_sims(number=number, select_sim=select_sim)
+        self.select_all_sims(number=number, all_select_sim=all_select_sim)

Modified: 1.2/specific_fns/model_free.py
URL: 
http://svn.gna.org/viewcvs/relax/1.2/specific_fns/model_free.py?rev=2899&r1=2898&r2=2899&view=diff
==============================================================================
--- 1.2/specific_fns/model_free.py (original)
+++ 1.2/specific_fns/model_free.py Thu Nov 30 11:13:59 2006
@@ -1420,10 +1420,12 @@
 
         # Local tm.
         if name == 'local_tm' and value >= c1:
+            print "The local tm parameter of " + `value` + " is greater than 
" + `c1` + ", eliminating spin system " + `self.relax.data.res[run][i].num` + 
" " + self.relax.data.res[run][i].name + " of the run " + `run`
             return 1
 
         # Internal correlation times.
         if match('t[efs]', name) and value >= c2 * tm:
+            print "The " + name + " value of " + `value` + " is greater than 
" + `c2 * tm` + ", eliminating spin system " + 
`self.relax.data.res[run][i].num` + " " + self.relax.data.res[run][i].name + 
" of the run " + `run`
             return 1
 
         # Accept model.
@@ -3343,7 +3345,7 @@
         nucleus_set = 0
         sim_num = None
         sims = []
-        select_sim = []
+        all_select_sim = []
         diff_data_set = 0
         diff_error_set = 0
         diff_sim_set = None
@@ -3397,11 +3399,14 @@
                 except:
                     raise RelaxError, "The simulation number '%s' is 
invalid." % sim_num
 
-                # Update the sims array.
-                sims.append(sim_num)
+                # A new simulation number.
+                if sim_num not in sims:
+                    # Update the sims array and append an empty array to the 
selected sims array.
+                    sims.append(sim_num)
+                    all_select_sim.append([])
 
                 # Selected simulations.
-                select_sim.append(self.file_line[self.col['select']])
+                
all_select_sim[-1].append(int(self.file_line[self.col['select']]))
 
             # Diffusion tensor data.
             if self.data_set == 'value' and not diff_data_set:
@@ -3427,7 +3432,7 @@
                 if self.read_columnar_pdb(print_flag):
                     pdb = 1
 
-            # XH vector.
+            # XH vector, heteronucleus, and proton.
             if self.data_set == 'value':
                 self.read_columnar_xh_vect()
 
@@ -3439,7 +3444,14 @@
 
         # Set up the simulations.
         if len(sims):
-            self.relax.generic.monte_carlo.setup(self.run, 
select_sim=select_sim)
+            # Convert the selected simulation array of arrays into a Numeric 
matrix and transpose it.
+            all_select_sim = transpose(array(all_select_sim))
+
+            # Set up the Monte Carlo simulations.
+            self.relax.generic.monte_carlo.setup(self.run, number=len(sims), 
all_select_sim=all_select_sim)
+
+            # Turn the simulation state to off!
+            self.relax.data.sim_state[self.run] = 0
 
 
     def read_columnar_sequence(self):
@@ -3470,6 +3482,10 @@
 
             # Set the vector.
             self.relax.generic.pdb.set_vector(run=self.run, 
res=self.res_index, xh_vect=xh_vect)
+
+        # The heteronucleus and proton names.
+        self.relax.data.res[self.run][self.res_index].heteronuc = 
self.file_line[self.col['pdb_heteronuc']]
+        self.relax.data.res[self.run][self.res_index].proton = 
self.file_line[self.col['pdb_proton']]
 
 
     def remove_tm(self, run, res_num):
@@ -4980,7 +4996,7 @@
                     xh_vect = replace(`data.xh_vect.tolist()`, ' ', '')
 
                 # Write the line.
-                self.write_columnar_line(file=file, num=data.num, 
name=data.name, select=data.select, data_set='error', nucleus=nucleus, 
model=model, equation=equation, params=params, param_set=self.param_set, 
s2=s2, s2f=s2f, s2s=s2s, local_tm=local_tm, te=te, tf=tf, ts=ts, rex=rex, 
r=r, csa=csa, diff_type=diff_type, diff_params=diff_params, pdb=pdb, 
pdb_model=pdb_model, pdb_heteronuc=pdb_heteronuc, pdb_proton=pdb_proton, 
xh_vect=xh_vect, ri_labels=ri_labels, remap_table=remap_table, 
frq_labels=frq_labels, frq=frq, ri=ri, ri_error=ri_error)
+                self.write_columnar_line(file=file, num=data.num, 
name=data.name, select=data.select, data_set='error', nucleus=nucleus, 
model=model, equation=equation, params=params, param_set=self.param_set, 
s2=s2, s2f=s2f, s2s=s2s, local_tm=local_tm, te=te, tf=tf, ts=ts, rex=rex, 
r=r, csa=csa, diff_type=diff_type, diff_params=diff_params, pdb=pdb, 
pdb_model=pdb_model, pdb_heteronuc=data.heteronuc, pdb_proton=data.proton, 
xh_vect=xh_vect, ri_labels=ri_labels, remap_table=remap_table, 
frq_labels=frq_labels, frq=frq, ri=ri, ri_error=ri_error)
 
 
         # Simulation values.
@@ -5169,7 +5185,7 @@
                         xh_vect = replace(`data.xh_vect.tolist()`, ' ', '')
 
                     # Write the line.
-                    self.write_columnar_line(file=file, num=data.num, 
name=data.name, select=data.select, select_sim=select_sim, 
data_set='sim_'+`i`, nucleus=nucleus, model=model, equation=equation, 
params=params, param_set=self.param_set, s2=s2, s2f=s2f, s2s=s2s, 
local_tm=local_tm, te=te, tf=tf, ts=ts, rex=rex, r=r, csa=csa, chi2=chi2, 
i=iter, f=f, g=g, h=h, warn=warn, diff_type=diff_type, 
diff_params=diff_params, pdb=pdb, pdb_model=pdb_model, 
pdb_heteronuc=pdb_heteronuc, pdb_proton=pdb_proton, xh_vect=xh_vect, 
ri_labels=ri_labels, remap_table=remap_table, frq_labels=frq_labels, frq=frq, 
ri=ri, ri_error=ri_error)
+                    self.write_columnar_line(file=file, num=data.num, 
name=data.name, select=data.select, select_sim=select_sim, 
data_set='sim_'+`i`, nucleus=nucleus, model=model, equation=equation, 
params=params, param_set=self.param_set, s2=s2, s2f=s2f, s2s=s2s, 
local_tm=local_tm, te=te, tf=tf, ts=ts, rex=rex, r=r, csa=csa, chi2=chi2, 
i=iter, f=f, g=g, h=h, warn=warn, diff_type=diff_type, 
diff_params=diff_params, pdb=pdb, pdb_model=pdb_model, 
pdb_heteronuc=data.heteronuc, pdb_proton=data.proton, xh_vect=xh_vect, 
ri_labels=ri_labels, remap_table=remap_table, frq_labels=frq_labels, frq=frq, 
ri=ri, ri_error=ri_error)
 
 
 




Related Messages


Powered by MHonArc, Updated Thu Nov 30 12:00:14 2006