Dear Edward.
The trick is to define a id list and intensity list of equal length.
(Even though the intensity list will not be used.)
This is a script I setup for doing:
https://gna.org/bugs/?21665
----------
####### Get experiment settings from procpar
# Path to Varian procpar file
path_procpar_1 = os.path.join(os.getcwd(), "..", "..",
"%s_060518"%(setup_pipe_bundle),
"%s_060518_%s.fid"%(setup_pipe_bundle, current_setup),"procpar_ori")
file_procpar_1 = open(path_procpar_1, "r")
lines_procpar_1 = file_procpar_1.readlines()
path_procpar_2 = os.path.join(os.getcwd(), "..", "..",
"%s_060521"%(setup_pipe_bundle),
"%s_060521_%s.fid"%(setup_pipe_bundle, current_setup),"procpar_ori")
file_procpar_2 = open(path_procpar_2, "r")
lines_procpar_2 = file_procpar_2.readlines()
# Define regular search terms
search_ncyc = "^ncyc "
search_time_T2 = "^time_T2 "
search_sfrq = "^sfrq "
for i in range(len(lines_procpar_1)):
line = lines_procpar_1[i]
# Search ncycs_1
if re.search(search_ncyc, line):
ncycs_1 = map(int, lines_procpar_1[i+1].split(" ")[1:-1])
print("Number of is:", ncycs_1)
# Search time_T2_1
if re.search(search_time_T2, line):
time_T2_1 = float(lines_procpar_1[i+1].split(" ")[1])
print("time_T2_1 is:", time_T2_1)
# Search spectrometer frequency
if re.search(search_sfrq, line):
sfrq_1 = float(lines_procpar_1[i+1].split(" ")[1])
print("Spectrometer frequency is:", sfrq_1)
for i in range(len(lines_procpar_2)):
line = lines_procpar_2[i]
# Search ncycs_2
if re.search(search_ncyc, line):
ncycs_2 = map(int, lines_procpar_2[i+1].split(" ")[1:-1])
print("Number of is:", ncycs_2)
# Search time_T2_2
if re.search(search_time_T2, line):
time_T2_2 = float(lines_procpar_2[i+1].split(" ")[1])
print("time_T2_2 is:", time_T2_2)
# Search spectrometer frequency
if re.search(search_sfrq, line):
sfrq_2 = float(lines_procpar_2[i+1].split(" ")[1])
print("Spectrometer frequency is:", sfrq_2)
# Find dublicates of ncyc_1
dublicates_1 = map(lambda val: (val, [i for i in xrange(len(ncycs_1))
if ncycs_1[i] == val]), ncycs_1)
dublicates_2 = map(lambda val: (val, [i for i in xrange(len(ncycs_2))
if ncycs_2[i] == val]), ncycs_2)
# Sort dublicates_1 into list
dublicates_list_1 = []
for ncyc, list_index_occur in dublicates_1:
if len(list_index_occur) > 1:
dub = []
for list_index in list_index_occur:
dub.append(list_index)
dublicates_list_1.append(dub)
# Remove dublicate entries
dublicates_list_1.sort()
dublicates_list_1 = list(dublicates_list_1 for dublicates_list_1, _ in
itertools.groupby(dublicates_list_1))
# Sort dublicates_2 into list
dublicates_list_2 = []
for ncyc, list_index_occur in dublicates_2:
if len(list_index_occur) > 1:
dub = []
for list_index in list_index_occur:
dub.append(list_index)
dublicates_list_2.append(dub)
# Remove dublicate entries
dublicates_list_2.sort()
dublicates_list_2 = list(dublicates_list_2 for dublicates_list_2, _ in
itertools.groupby(dublicates_list_2))
# Test if dublicates is present
if len(dublicates_list_1) > 0:
dublicates_present_1 = True
print("Index list of dublicates of ncyc:", dublicates_list_1,
"From: ", ncycs_1)
else:
dublicates_present_1 = False
# Test if dublicates is present
if len(dublicates_list_2) > 0:
dublicates_present_2 = True
print("Index list of dublicates of ncyc:", dublicates_list_2,
"From: ", ncycs_2)
else:
dublicates_present_2 = False
############ Define function to setup experiment in relax
def setup_exp(id_list, ncycs, time_T2, sfrq, dublicates_present,
dublicates_list, id_name):
list_of_ids = []
for i in range(len(ncycs)):
ncyc = ncycs[i]
vcpmg = ncyc/time_T2
# Test if spectrum is a reference
if float(vcpmg) == 0.0:
vcpmg = None
else:
vcpmg = round(float(vcpmg),3)
# Set the current spectrum id
current_id = id_list[i]
list_of_ids.append(current_id)
# Set the current experiment type.
relax_disp.exp_type(spectrum_id=current_id, exp_type='SQ CPMG')
# Set the NMR field strength of the spectrum.
spectrometer.frequency(id=current_id, frq=sfrq, units='MHz')
# Relaxation dispersion CPMG constant time delay T (in s).
relax_disp.relax_time(spectrum_id=current_id, time=time_T2)
# Set the relaxation dispersion CPMG frequencies.
relax_disp.cpmg_frq(spectrum_id=current_id, cpmg_frq=vcpmg)
# Set the peak intensity errors, as defined as the baseplane RMSD.
#spectrum.baseplane_rmsd(error=rmsd_err, spectrum_id=current_id)
# Specify the duplicated spectra.
if dublicates_present:
for dub_i in dublicates_list:
dub_list = []
for dub in dub_i:
dub_list.append("%s%s"%(id_name, dub))
spectrum.replicated(spectrum_ids=dub_list)
spectrum.error_analysis(subset=list_of_ids)
#######
####### Define compare to
compare_filename_1 = os.path.join(os.getcwd(), "..", "..",
"%s_060518"%(setup_pipe_bundle),
"%s_060518_%s.fid"%(setup_pipe_bundle, current_setup),'analysis_FT',
'ser_files', COMPARE, '%s_files.txt'%(COMPARE) )
compare_file_1 = open(compare_filename_1, 'r')
compare_filelines_1 = compare_file_1.readlines()
# Take the first line in list of files
compare_ni_file_1 = os.path.join(os.getcwd(), "..", "..",
"%s_060518"%(setup_pipe_bundle),
"%s_060518_%s.fid"%(setup_pipe_bundle, current_setup),'analysis_FT',
'ser_files', COMPARE, compare_filelines_1[0].strip())
compare_ni_1 = int(compare_filelines_1[0].split('_')[0])
compare_ni_pipe_name_1 = "compare_%s_%s"%(compare_ni_1, COMPARE)
print("compare file: %s"%compare_ni_file_1)
print("compare ni: %i"%compare_ni_1)
####### Define compare to
compare_filename_2 = os.path.join(os.getcwd(), "..", "..",
"%s_060521"%(setup_pipe_bundle),
"%s_060521_%s.fid"%(setup_pipe_bundle, current_setup),'analysis_FT',
'ser_files', COMPARE, '%s_files.txt'%(COMPARE) )
compare_file_2 = open(compare_filename_2, 'r')
compare_filelines_2 = compare_file_2.readlines()
# Take the first line in list of files
compare_ni_file_2 = os.path.join(os.getcwd(), "..", "..",
"%s_060521"%(setup_pipe_bundle),
"%s_060521_%s.fid"%(setup_pipe_bundle, current_setup),'analysis_FT',
'ser_files', COMPARE, compare_filelines_2[0].strip())
compare_ni_2 = int(compare_filelines_2[0].split('_')[0])
compare_ni_pipe_name_2 = "compare_%s_%s"%(compare_ni_2, COMPARE)
print("compare file: %s"%compare_ni_file_2)
print("compare ni: %i"%compare_ni_2)
##### Setup initial pipe data
# Create the setup data pipe.
setup_pipe_name = 'setup pipe'
pipe.create(pipe_name=setup_pipe_name, bundle=setup_pipe_bundle,
pipe_type='relax_disp')
# Create the spins
spectrum.read_spins(file=compare_ni_file_1)
spectrum.read_spins(file=compare_ni_file_2)
# Name the isotope for field strength scaling.
spin.isotope(isotope='15N')
# Save the variables to cdp
cdp.dublicates_list_1 = dublicates_list_1
cdp.dublicates_list_2 = dublicates_list_2
cdp.dublicates_present_1 = dublicates_present_1
cdp.dublicates_present_2 = dublicates_present_2
# Save the spin ids
spin_ids = []
for spin_cur, mol_name, res_num, res_name, spin_id in
spin_loop(full_info=True, return_id=True, skip_desel=True):
spin_ids.append(spin_id)
cdp.spin_ids = spin_ids
####### Now doing - The 'R2eff' model - for initial compare to
# Copy the settings in the spin setup pipe to its own pipe.
compare_ni_pipe_name = compare_ni_pipe_name_1
pipe.copy(pipe_from=setup_pipe_name, pipe_to=compare_ni_pipe_name,
bundle_to=setup_pipe_bundle )
pipe.switch(pipe_name=compare_ni_pipe_name)
id_list_1 = []
int_col_1 = []
for i in range(len(ncycs_1)):
id_list_1.append("Z_A%s"%i)
int_col_1.append(i)
spectrum.read_intensities(file=compare_ni_file_1,
spectrum_id=id_list_1, int_method='height', int_col=int_col_1)
setup_exp(id_list_1, ncycs_1, time_T2_1, sfrq_1, dublicates_present_1,
dublicates_list_1, "Z_A")
id_list_2 = []
int_col_2 = []
for i in range(len(ncycs_2)):
id_list_2.append("Z_B%s"%i)
int_col_2.append(i)
spectrum.read_intensities(file=compare_ni_file_2,
spectrum_id=id_list_2, int_method='height', int_col=int_col_2)
setup_exp(id_list_2, ncycs_2, time_T2_2, sfrq_2, dublicates_present_2,
dublicates_list_2, "Z_B")
print("- The 'R2eff' model -")
compare_ni_pipe_name_r2eff = "%s_R2eff"%(compare_ni_pipe_name)
pipe.copy(pipe_from=compare_ni_pipe_name,
pipe_to=compare_ni_pipe_name_r2eff, bundle_to=setup_pipe_bundle)
pipe.switch(pipe_name=compare_ni_pipe_name_r2eff)
relax_disp.select_model(model='R2eff')
calc(verbosity=1)
2014-02-20 10:09 GMT+01:00 Edward d'Auvergne <edward@xxxxxxxxxxxxx>:
Hi,
Troels, this question is mainly for you as I know you have looked at
this before. I was wondering if you were able to simultaneously load
multiple peak lists via the spectrum.read_intensities user function?
I am busy making a tutorial for the manual for how to perform a
relaxation dispersion analysis using the GUI, using Flemming Hansen's
data in relax.
I noticed that the peak intensity wizard in the GUI is having
problems, specifically that the file selection dialog for the
spectrum.read_intensities user function will only allow single files
to be selected, but that the spectrum ID argument allows for a list of
spectrum IDs to be supplied. Have you encountered the same problem?
If so, how did you solve it?
Cheers,
Edward
_______________________________________________
relax (http://www.nmr-relax.com)
This is the relax-devel mailing list
relax-devel@xxxxxxx
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