Seb,
I've noticed the introduction of a few bugs, please see below.
On Thu, Apr 3, 2008 at 5:19 AM, <sebastien.morin.1@xxxxxxxxx> wrote:
Author: semor
Date: Thu Apr 3 05:19:32 2008
New Revision: 5252
URL: http://svn.gna.org/viewcvs/relax?rev=5252&view=rev
Log:
Continued the modifications to the new design for the set_selected_sim(),
sim_pack_data() and write_columnar_results() functions from
specific_fns.jw_mapping.
Those changes are based on the work already done for the consistency_tests
code in the consistency_tests branch.
Modified:
1.3/specific_fns/jw_mapping.py
Modified: 1.3/specific_fns/jw_mapping.py
URL:
http://svn.gna.org/viewcvs/relax/1.3/specific_fns/jw_mapping.py?rev=5252&r1=5251&r2=5252&view=diff
==============================================================================
--- 1.3/specific_fns/jw_mapping.py (original)
+++ 1.3/specific_fns/jw_mapping.py Thu Apr 3 05:19:32 2008
@@ -443,7 +443,7 @@
return cdp.res[instance].jwh_sim
- def sim_return_selected(self, run, instance):
+ def sim_return_selected(self, instance):
"""Function for returning the array of selected simulation
flags."""
# Alias the current data pipe.
@@ -453,17 +453,17 @@
return cdp.res[instance].select_sim
- def set_selected_sim(self, run, instance, select_sim):
+ def set_selected_sim(self, instance, select_sim):
"""Function for returning the array of selected simulation
flags."""
- # Arguments.
- self.run = run
+ # Alias the current data pipe.
+ cdp = relax_data_store[relax_data_store.current_pipe]
# Multiple instances.
- relax_data_store.res[self.run][instance].select_sim = select_sim
-
-
- def sim_pack_data(self, run, i, sim_data):
+ cdp.res[instance].select_sim = select_sim
+
+
+ def sim_pack_data(self, spin, sim_data):
"""Function for packing Monte Carlo simulation data."""
# Test if the simulation data already exists.
@@ -523,19 +523,19 @@
file.write("\n")
- def write_columnar_results(self, file, run):
+ def write_columnar_results(self, file):
"""Function for printing the results into a file."""
- # Arguments.
- self.run = run
+ # Alias the current data pipe.
+ cdp = relax_data_store[relax_data_store.current_pipe]
# Test if the run exists.
if not self.run in relax_data_store.run_names:
raise RelaxNoPipeError, self.run
# Test if sequence data is loaded.
- if not relax_data_store.res.has_key(self.run):
- raise RelaxNoSequenceError, self.run
+ if not exists_mol_res_spin_data():
+ raise RelaxNoSequenceError
# Header.
@@ -545,9 +545,9 @@
ri = []
ri_error = []
if hasattr(relax_data_store, 'num_ri'):
- for i in xrange(relax_data_store.num_ri[self.run]):
- ri.append('Ri_(' +
relax_data_store.ri_labels[self.run][i] + "_" +
relax_data_store.frq_labels[self.run][relax_data_store.remap_table[self.run][i]]
+ ")")
- ri_error.append('Ri_error_(' +
relax_data_store.ri_labels[self.run][i] + "_" +
relax_data_store.frq_labels[self.run][relax_data_store.remap_table[self.run][i]]
+ ")")
+ for i in xrange(cdp.num_ri):
+ ri.append('Ri_(' + cdp.ri_labels[i] + "_" +
cdp.frq_labels[cdp.remap_table[i]] + ")")
+ ri_error.append('Ri_error_(' + cdp.ri_labels[i] + "_" +
cdp.frq_labels[cdp.remap_table[i]] + ")")
# Write the header line.
self.write_columnar_line(file=file, num='Num', name='Name',
select='Selected', data_set='Data_set', nucleus='Nucleus',
wH='Proton_frq_(MHz)', j0='J(0)', jwx='J(wX)', jwh='J(wH)',
r='Bond_length_(A)', csa='CSA_(ppm)', ri_labels='Ri_labels',
remap_table='Remap_table', frq_labels='Frq_labels', frq='Frequencies',
ri=ri, ri_error=ri_error)
@@ -560,14 +560,14 @@
nucleus = self.relax.generic.nuclei.find_nucleus()
# The proton frequency in MHz.
- wH = relax_data_store.jw_frq[self.run] / 1e6
+ wH = cdp.jw_frq / 1e6
# Relaxation data setup.
try:
- ri_labels = replace(`relax_data_store.ri_labels[self.run]`, '
', '')
- remap_table =
replace(`relax_data_store.remap_table[self.run]`, ' ', '')
- frq_labels = replace(`relax_data_store.frq_labels[self.run]`,
' ', '')
- frq = replace(`relax_data_store.frq[self.run]`, ' ', '')
+ ri_labels = replace(`cdp.ri_labels`, ' ', '')
+ remap_table = replace(`cdp.remap_table`, ' ', '')
+ frq_labels = replace(`cdp.frq_labels`, ' ', '')
+ frq = replace(`cdp.frq`, ' ', '')
except AttributeError:
ri_labels = `None`
remap_table = `None`
@@ -575,9 +575,9 @@
frq = `None`
# Loop over the sequence.
- for i in xrange(len(relax_data_store.res[self.run])):
+ for i in xrange(len(cdp.res)):
# Reassign data structure.
- data = relax_data_store.res[self.run][i]
+ data = cdp.res[i]
Well, this isn't really a bug, but the code will not be functional.
Here the spin_loop() should be used.
# J(0).
j0 = None
@@ -607,18 +607,18 @@
# Relaxation data and errors.
ri = []
ri_error = []
- if hasattr(relax_data_store, 'num_ri'):
- for i in xrange(relax_data_store.num_ri[self.run]):
+ if hasattr(cdp, 'num_ri'):
+ for i in xrange(cdp.num_ri):
try:
# Find the residue specific data corresponding to
i.
index = None
for j in xrange(data.num_ri):
- if data.ri_labels[j] ==
relax_data_store.ri_labels[self.run][i] and
data.frq_labels[data.remap_table[j]] ==
relax_data_store.frq_labels[self.run][relax_data_store.remap_table[self.run][i]]:
+ if data.ri_labels[j] == cdp.ri_labels[i] and
data.frq_labels[data.remap_table[j]] == cdp.frq_labels[cdp.remap_table[i]]:
index = j
# Data exists for this data type.
- ri.append(`data.relax_data[index]`)
- ri_error.append(`data.relax_error[index]`)
+ ri.append(spin)
+ ri_error.append(spin)
The last two lines here introduce the bug. The code should be:
+ ri.append(spin.relax_data[index])
+ ri_error.append(spin.relax_error[index])
# No data exists for this data type.
except:
@@ -633,15 +633,15 @@
#########
# Skip this section and the next if no simulations have been setup.
- if not hasattr(relax_data_store, 'sim_state'):
+ if not hasattr(cdp, 'sim_state'):
return
- elif relax_data_store.sim_state[self.run] == 0:
+ elif cdp.sim_state == 0:
return
# Loop over the sequence.
- for i in xrange(len(relax_data_store.res[self.run])):
+ for i in xrange(len(cdp.res)):
# Reassign data structure.
- data = relax_data_store.res[self.run][i]
+ data = cdp.res[i]
Here, again, the spin_loop() needs to be used to get the SpinContainer
objects.
# J(0).
j0 = None
@@ -671,7 +671,7 @@
# Relaxation data and errors.
ri = []
ri_error = []
- for i in xrange(relax_data_store.num_ri[self.run]):
+ for i in xrange(cdp.num_ri):
ri.append(None)
ri_error.append(None)
@@ -683,11 +683,11 @@
####################
# Loop over the simulations.
- for i in xrange(relax_data_store.sim_number[self.run]):
+ for i in xrange(cdp.sim_number):
# Loop over the sequence.
- for j in xrange(len(relax_data_store.res[self.run])):
+ for j in xrange(len(cdp.res)):
# Reassign data structure.
- data = relax_data_store.res[self.run][j]
+ data = cdp.res[j]
Again the spin_loop() should be used to avoid getting into the
sequence specific structures in cdp.mol[i].res[j].spin[k]. This
spin_loop() generator function will allow the relax data store to
evolve if necessary without requiring any changes to these parts of
the relax code base.
# J(0).
j0 = None
@@ -717,18 +717,18 @@
# Relaxation data and errors.
ri = []
ri_error = []
- if hasattr(self.relax.data, 'num_ri'):
- for k in xrange(relax_data_store.num_ri[self.run]):
+ if hasattr(cdp, 'num_ri'):
+ for k in xrange(cdp.num.ri):
try:
# Find the residue specific data corresponding
to k.
index = None
for l in xrange(data.num_ri):
- if data.ri_labels[l] ==
relax_data_store.ri_labels[self.run][k] and
data.frq_labels[data.remap_table[l]] ==
relax_data_store.frq_labels[self.run][relax_data_store.remap_table[self.run][k]]:
+ if data.ri_labels[l] == cdp.ri_labels[k]
and data.frq_labels[data.remap_table[l]] ==
cdp.frq_labels[cdp.remap_table[k]]:
index = l
# Data exists for this data type.
- ri.append(`data.relax_sim_data[i][index]`)
- ri_error.append(`data.relax_error[index]`)
+ ri.append(spin)
+ ri_error.append(spin)
This is the same bug as before. The code should be:
+ ri.append(`spin.relax_sim_data[i][index]`)
+ ri_error.append(`spin.relax_error[index]`)
Cheers,
Edward