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)