mailRe: Loading multiple spectra via the spectrum.read_intensities user function.


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

Header


Content

Posted by Troels Emtekær Linnet on February 20, 2014 - 11:03:
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



Related Messages


Powered by MHonArc, Updated Thu Feb 20 11:20:10 2014