Hi Nick, Have a look in the directory 'test_suite/shared_data/peak_lists'. There you'll find a number of examples. I would recommend the NOE analysis files 'ref_ave.list' and 'sat_ave.list', as well as the '*.list' files in the 'bug_19887' subdirectory. These are all Sparky peak lists which conform to the PDB nomenclature. The format is essentially as follows:
- First 3 letters are the standard PDB amino-acid residue codes (capitalised). - The next x numbers are the residue numbers. This and the above are the Sparky 'Group'. - The next characters are the standard PDB atom names for w1 (capitalised). - Then there is a dash (-). - The last characters are the standard PDB atom names for w2 (capitalised). Unfortunately Sparky does not enforce an assignment naming system, which then makes it very difficult to properly read Sparky peak lists. The Sparky 'Group' concept is a bit of a nasty kludge! You should not remove any header lines or empty lines from the peak list files as these are essential for relax to determine the file format. That is why you are seeing "Generic formatted data file" from the spectrum.read_intensities user function - this is because the headers were removed. If you have the format above, then it should not be a problem reading in the Sparky lists. I hope this helps. Regards Edward P. S. Here is one of the example files for reference: $ cat test_suite/shared_data/peak_lists/bug_19887/T1_304.040.list Assignment w1 w2 Data Height GLU24N-HN 123.067 7.811 1095970 LYS28N-HN 116.691 7.960 1466770 GLN29N-HN 119.487 7.990 1411100 $ On 3 September 2012 19:36, Nicolas Doucet <[email protected]> wrote: > Edward, > > Thanks for your response. We're progressing slowly and, as you can see from > our last email, we stumbled upon pretty obvious answers... > > That being said, we still run into many error messages. Mainly, we're > struggling with the 'spectrum.read_intensities' section and I believe it's > merely a question of file format, column identification and/or character > recognition. > > Anyway, so far we've tried many edits to our lists: > > 1) We separated residue names into different columns. Example: ARG1N-HN > became ARG 1 N-HN because residue names weren't recognized. > 2) We got rid of column titles, which yielded an error. > 3) We also got rid of the 'none' qualifier in the lists and replaced them by > zeros. However, as per your last email, we might just get rid of those > residues altogether. > 4) We added columns for the molecule name and the spin id, but those didn't > change anything. > > As you will see from the commented lines in our script below, we also tried > working on the spectrum.read_intensities section but we can't figure out > what's wrong. We tried a bunch of combinations and keep getting errors. > > We also got an error from the "set relaxation time" section. The following > yielded a "spectrum_id already exists" message: > > # Set the relaxation times. > relax_fit.relax_time(time=0.0100, spectrum_id='1') > relax_fit.relax_time(time=0.1000, spectrum_id='2') > relax_fit.relax_time(time=0.1000, spectrum_id='3') > relax_fit.relax_time(time=0.7000, spectrum_id='4') > relax_fit.relax_time(time=1.1000, spectrum_id='5') > relax_fit.relax_time(time=1.4000, spectrum_id='6') > > Replacing the spectrum_id number yielded an error message saying it can't > find spectrum_ids... Well, duh! > > Anyway, as you can see, those are details beginners don't know how to handle > in relax. It would be SOOO much easier if we could just compare our own > files with a known "default example" run for R1, R2, NOE and subsequently > ModelFree. For us, it would then just be a matter of comparing our file > edits with known file formats for scripts, lists and pdbs of a "standard" > run. > > The manual is very thorough, but sometimes a bit overwhelming. Learning by > comparing our files with those of a real example that we can run flawlessly > is often much easier. > > Nick > > > """Script for relaxation curve fitting.""" > > # Create the 'rx' data pipe. > pipe.create('rx', 'relax_fit') > > # Load the backbone amide 15N spins from a PDB file. > structure.read_pdb('1QMT.pdb') > structure.load_spins('#1QMT_mol1@N') > > # Spectrum names. > names = [ > 'T1_0.01s_800', > 'T1_0.10s_800', > 'T1_0.10s-dup_800' > 'T1_0.70s_800', > 'T1_1.10s_800', > 'T1_1.40s_800' > ] > > # Relaxation times (in seconds). > times = [ > 0.0100, > 0.1000, > 0.1000, > 0.7000, > 1.1000, > 1.4000 > ] > > # Loop over the spectra. > for i in xrange(len(names)): > # Load the peak intensities. > # spectrum.read_intensities(file='T1_0.01s_800.list', dir=None, > spectrum_id='1', int_col=6) > # spectrum.read_intensities(file='T1_0.10s_800.list', dir=None, > spectrum_id='2', int_col=6) > # spectrum.read_intensities(file='T1_0.10s-dup_800.list', dir=None, > spectrum_id='3', int_col=6) > # spectrum.read_intensities(file='T1_0.70s_800.list', dir=None, > spectrum_id='4', int_col=6) > # spectrum.read_intensities(file='T1_1.10s_800.list', dir=None, > spectrum_id='5', int_col=6) > # spectrum.read_intensities(file='T1_1.40s_800.list', dir=None, > spectrum_id='6', int_col=6) > # spectrum.read_intensities(file='T1_0.01s_800.list', spectrum_id='1', > int_method='height') > # spectrum.read_intensities(file='T1_0.10s_800.list', spectrum_id='2', > int_method='height') > # spectrum.read_intensities(file='T1_0.10s-dup_800.list', > spectrum_id='3', int_method='height') > # spectrum.read_intensities(file='T1_0.70s_800.list', spectrum_id='4', > int_method='height') > # spectrum.read_intensities(file='T1_1.10s_800.list', spectrum_id='5', > int_method='height') > # spectrum.read_intensities(file='T1_1.40s_800.list', spectrum_id='6', > int_method='height') > # spectrum.read_intensities(file='T1_0.01s_800', spectrum_id='1', > relax_time=0.0100, int_col=6) > # spectrum.read_intensities(file='T1_0.10s_800', spectrum_id='2', > relax_time=0.1000, int_col=6) > # spectrum.read_intensities(file='T1_0.10s-dup_800', spectrum_id='3', > relax_time=0.1000, int_col=6) > # spectrum.read_intensities(file='T1_0.70s_800', spectrum_id='4', > relax_time=0.7000, int_col=6) > # spectrum.read_intensities(file='T1_1.10s_800', spectrum_id='5', > relax_time=1.1000, int_col=6) > # spectrum.read_intensities(file='T1_1.40s_800', spectrum_id='6', > relax_time=1.4000, int_col=6) > spectrum.read_intensities(file='T1_0.01s_800.list', dir=None, > spectrum_id='1', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > spectrum.read_intensities(file='T1_0.10s_800.list', dir=None, > spectrum_id='2', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > spectrum.read_intensities(file='T1_0.10s-dup_800.list', dir=None, > spectrum_id='3', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > spectrum.read_intensities(file='T1_0.70s_800.list', dir=None, > spectrum_id='4', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > spectrum.read_intensities(file='T1_1.10s_800.list', dir=None, > spectrum_id='5', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > spectrum.read_intensities(file='T1_1.40s_800.list', dir=None, > spectrum_id='6', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > > # Set the relaxation times. > relax_fit.relax_time(time=0.0100, spectrum_id='11') > relax_fit.relax_time(time=0.1000, spectrum_id='12') > relax_fit.relax_time(time=0.1000, spectrum_id='13') > relax_fit.relax_time(time=0.7000, spectrum_id='14') > relax_fit.relax_time(time=1.1000, spectrum_id='15') > relax_fit.relax_time(time=1.4000, spectrum_id='16') > > # Specify the duplicated spectra. > spectrum.replicated(spectrum_ids=['T1_0.10s_800.list', > 'T1_0.10s-dup_800.list']) > > # Peak intensity error analysis. > spectrum.error_analysis(700) > > # Deselect unresolved spins. > deselect.read(file='unresolved', mol_name_col=1, res_num_col=2, > res_name_col=3, spin_num_col=4, spin_name_col=5) > > # Set the relaxation curve type. > relax_fit.select_model('exp') > > # Grid search. > grid_search(inc=11) > > # Minimise. > minimise('simplex', scaling=False, constraints=False) > > # Monte Carlo simulations. > monte_carlo.setup(number=500) > monte_carlo.create_data() > monte_carlo.initial_values() > minimise('simplex', scaling=False, constraints=False) > monte_carlo.error_analysis() > > # Save the relaxation rates. > value.write(param='rx', file='rx.out', force=True) > > # Save the results. > results.write(file='results', force=True) > > # Create Grace plots of the data. > grace.write(y_data_type='chi2', file='chi2.agr', force=True) # Minimised > chi-squared value. > grace.write(y_data_type='i0', file='i0.agr', force=True) # Initial peak > intensity. > grace.write(y_data_type='rx', file='rx.agr', force=True) # Relaxation > rate. > grace.write(x_data_type='relax_times', y_data_type='intensities', > file='intensities.agr', force=True) # Average peak intensities. > grace.write(x_data_type='relax_times', y_data_type='intensities', norm=True, > file='intensities_norm.agr', force=True) # Average peak intensities > (normalised). > > # Display the Grace plots. > grace.view(file='chi2.agr') > grace.view(file='i0.agr') > grace.view(file='rx.agr') > grace.view(file='intensities.agr') > grace.view(file='intensities_norm.agr') > > # Save the program state. > state.save('rx.save', force=True) > ---------------------------------------------------------------------------------------------------- > > relax> pipe.create(pipe_name='rx', pipe_type='relax_fit', bundle=None) > > relax> structure.read_pdb(file='1QMT.pdb', dir=None, read_mol=None, > set_mol_name=None, read_model=None, set_model_num=None, parser='internal') > > Internal relax PDB parser. > Opening the file '1QMT.pdb' for reading. > Adding molecule '1QMT_mol1' to model None (from the original molecule number > 1 of model None) > > relax> structure.load_spins(spin_id='#1QMT_mol1@N', ave_pos=True) > Adding the following spins to the relax data store. > > # mol_name res_num res_name spin_num spin_name > 1QMT_mol1 0 MET 1 N > 1QMT_mol1 1 ARG 9 N > 1QMT_mol1 2 PRO 20 N > 1QMT_mol1 3 PRO 27 N > 1QMT_mol1 4 GLN 34 N > 1QMT_mol1 5 PHE 43 N > 1QMT_mol1 6 THR 54 N > 1QMT_mol1 7 ARG 61 N > 1QMT_mol1 8 ALA 72 N > 1QMT_mol1 9 GLN 77 N > 1QMT_mol1 10 TRP 86 N > 1QMT_mol1 11 PHE 100 N > 1QMT_mol1 12 ALA 111 N > 1QMT_mol1 13 ILE 116 N > 1QMT_mol1 14 GLN 124 N > 1QMT_mol1 15 HIS 133 N > 1QMT_mol1 16 ILE 143 N > 1QMT_mol1 17 SER 151 N > 1QMT_mol1 18 LEU 157 N > 1QMT_mol1 19 ASN 165 N > 1QMT_mol1 20 PRO 173 N > 1QMT_mol1 21 PRO 180 N > 1QMT_mol1 22 ARG 187 N > 1QMT_mol1 23 CYS 198 N > 1QMT_mol1 24 THR 204 N > 1QMT_mol1 25 ILE 211 N > 1QMT_mol1 26 ALA 219 N > 1QMT_mol1 27 MET 224 N > 1QMT_mol1 28 ARG 232 N > 1QMT_mol1 29 ALA 243 N > 1QMT_mol1 30 ILE 248 N > 1QMT_mol1 31 ASN 256 N > 1QMT_mol1 32 ASN 264 N > 1QMT_mol1 33 TYR 272 N > 1QMT_mol1 34 ARG 284 N > 1QMT_mol1 35 TRP 295 N > 1QMT_mol1 36 ARG 309 N > 1QMT_mol1 37 CYS 320 N > 1QMT_mol1 38 LYS 326 N > 1QMT_mol1 39 ASN 335 N > 1QMT_mol1 40 GLN 343 N > 1QMT_mol1 41 ASN 352 N > 1QMT_mol1 42 THR 360 N > 1QMT_mol1 43 PHE 367 N > 1QMT_mol1 44 LEU 378 N > 1QMT_mol1 45 ARG 386 N > 1QMT_mol1 46 THR 397 N > 1QMT_mol1 47 THR 404 N > 1QMT_mol1 48 PHE 411 N > 1QMT_mol1 49 ALA 422 N > 1QMT_mol1 50 ASN 427 N > 1QMT_mol1 51 VAL 435 N > 1QMT_mol1 52 VAL 442 N > 1QMT_mol1 53 ASN 449 N > 1QMT_mol1 54 VAL 457 N > 1QMT_mol1 55 CYS 464 N > 1QMT_mol1 56 GLY 470 N > 1QMT_mol1 57 ASN 474 N > 1QMT_mol1 58 GLN 482 N > 1QMT_mol1 59 SER 491 N > 1QMT_mol1 60 ILE 497 N > 1QMT_mol1 61 ARG 505 N > 1QMT_mol1 62 CYS 516 N > 1QMT_mol1 63 PRO 522 N > 1QMT_mol1 64 HIS 529 N > 1QMT_mol1 65 ASN 539 N > 1QMT_mol1 66 ARG 547 N > 1QMT_mol1 67 THR 558 N > 1QMT_mol1 68 LEU 565 N > 1QMT_mol1 69 ASN 573 N > 1QMT_mol1 70 ASN 581 N > 1QMT_mol1 71 CYS 589 N > 1QMT_mol1 72 HIS 595 N > 1QMT_mol1 73 ARG 605 N > 1QMT_mol1 74 SER 616 N > 1QMT_mol1 75 ARG 622 N > 1QMT_mol1 76 PHE 633 N > 1QMT_mol1 77 ARG 644 N > 1QMT_mol1 78 VAL 655 N > 1QMT_mol1 79 PRO 662 N > 1QMT_mol1 80 LEU 669 N > 1QMT_mol1 81 LEU 677 N > 1QMT_mol1 82 HIS 685 N > 1QMT_mol1 83 CYS 695 N > 1QMT_mol1 84 ASP 701 N > 1QMT_mol1 85 LEU 709 N > 1QMT_mol1 86 ILE 717 N > 1QMT_mol1 87 ASN 725 N > 1QMT_mol1 88 PRO 733 N > 1QMT_mol1 89 GLY 740 N > 1QMT_mol1 90 ALA 744 N > 1QMT_mol1 91 GLN 749 N > 1QMT_mol1 92 ASN 758 N > 1QMT_mol1 93 ILE 766 N > 1QMT_mol1 94 SER 774 N > 1QMT_mol1 95 ASN 780 N > 1QMT_mol1 96 CYS 788 N > 1QMT_mol1 97 ARG 794 N > 1QMT_mol1 98 TYR 805 N > 1QMT_mol1 99 ALA 817 N > 1QMT_mol1 100 ASP 822 N > 1QMT_mol1 101 ARG 830 N > 1QMT_mol1 102 PRO 841 N > 1QMT_mol1 103 GLY 848 N > 1QMT_mol1 104 ARG 852 N > 1QMT_mol1 105 ARG 863 N > 1QMT_mol1 106 PHE 874 N > 1QMT_mol1 107 TYR 885 N > 1QMT_mol1 108 VAL 897 N > 1QMT_mol1 109 VAL 904 N > 1QMT_mol1 110 ALA 911 N > 1QMT_mol1 111 CYS 916 N > 1QMT_mol1 112 ASP 922 N > 1QMT_mol1 113 ASN 930 N > 1QMT_mol1 114 ARG 938 N > 1QMT_mol1 115 ASP 949 N > 1QMT_mol1 116 PRO 957 N > 1QMT_mol1 117 ARG 964 N > 1QMT_mol1 118 ASP 975 N > 1QMT_mol1 119 SER 983 N > 1QMT_mol1 120 PRO 989 N > 1QMT_mol1 121 ARG 996 N > 1QMT_mol1 122 TYR 1007 N > 1QMT_mol1 123 PRO 1019 N > 1QMT_mol1 124 VAL 1026 N > 1QMT_mol1 125 VAL 1033 N > 1QMT_mol1 126 PRO 1040 N > 1QMT_mol1 127 VAL 1047 N > 1QMT_mol1 128 HIS 1054 N > 1QMT_mol1 129 LEU 1064 N > 1QMT_mol1 130 ASP 1072 N > 1QMT_mol1 131 THR 1080 N > 1QMT_mol1 132 THR 1087 N > 1QMT_mol1 133 ILE 1094 N > > relax> spectrum.read_intensities(file='T1_0.01s_800.list', dir=None, > spectrum_id='1', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > Opening the file 'T1_0.01s_800.list' for reading. > Generic formatted data file. > > > relax> spectrum.read_intensities(file='T1_0.10s_800.list', dir=None, > spectrum_id='2', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > Opening the file 'T1_0.10s_800.list' for reading. > Generic formatted data file. > > > relax> spectrum.read_intensities(file='T1_0.10s-dup_800.list', dir=None, > spectrum_id='3', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > Opening the file 'T1_0.10s-dup_800.list' for reading. > Generic formatted data file. > > > relax> spectrum.read_intensities(file='T1_0.70s_800.list', dir=None, > spectrum_id='4', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > Opening the file 'T1_0.70s_800.list' for reading. > Generic formatted data file. > > > relax> spectrum.read_intensities(file='T1_1.10s_800.list', dir=None, > spectrum_id='5', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > Opening the file 'T1_1.10s_800.list' for reading. > Generic formatted data file. > > > relax> spectrum.read_intensities(file='T1_1.40s_800.list', dir=None, > spectrum_id='6', heteronuc='N', proton='HN', int_method='height', int_col=6, > spin_id_col=None, mol_name_col=None, res_num_col=2, res_name_col=1, > spin_num_col=None, spin_name_col=None, sep=None, spin_id=None, ncproc=None) > Opening the file 'T1_1.40s_800.list' for reading. > Generic formatted data file. > > > relax> relax_fit.relax_time(time=0.01, spectrum_id='11') > RelaxError: The peak heights corresponding to spectrum id '11' have not been > loaded. > > -- > Nicolas Doucet > Assistant Professor > INRS - Institut Armand-Frappier > University of Quebec > Institut Pasteur International Network > 531 Boulevard des Prairies > Laval (Quebec) H7V 1B7 CANADA > Phone: (450) 687-5010 #4212 > Fax: (450) 686-5501 > Email: [email protected] > Web: http://www.profs.inrs.ca/ndoucet/ > -- > > > > On 2012-08-31, at 12:40 PM, Edward d'Auvergne <[email protected]> wrote: > > Hi Nick, > > I'll answer your questions below: > > > 1) Default lists created by Sparky look like this: > > Assignment w1 w2 Data Height > > R1N-H 126.139 8.573 108076 > Q4N-H 118.070 8.861 50515 > F5N-H 119.682 7.577 111977 > T6N-H 113.163 8.827 95306 > R7N-H 120.731 8.903 108430 > A8N-H 126.058 10.299 92981 > Q9N-H 118.747 8.300 127858 > W10N-H 122.375 9.005 102254 > F11N-H 121.361 8.698 114173 > A12N-H 122.049 8.175 59426 > I13N-H 118.046 7.753 129168 > Q14N-H 111.972 7.184 73155 > H15N-H 106.081 7.773 119082 > I16N-H 122.326 8.294 156604 > S17N-H 120.624 7.734 133194 > L18N-H 128.309 8.660 163834 > N19N-H 115.816 8.450 241597 > > > It depends on how you assigned the peaks. If you use the full > 3-letter code, then it'll look like your example below. When I use > Sparky, in the 'at' window I use text such as 'TRP100' for the group. > You can pretty much use what you like, but it's difficult for relax to > then match everything up. It would be good to have proper residue > identification and then conversion of the different residue name > formats, but this is quite complex if you take modified residues, DNA, > RNA, sugars, and organic molecules into account - something which > cannot be ignored. > > > According to the relax manual, we need to convert lists to the following > format: > > Assignment w1 w2 Data Height > > ARG1N-HN 126.139 8.573 108076 > GLN4N-HN 118.07 8.861 50515 > PHE5N-HN 119.682 7.577 111977 > THR6N-HN 113.163 8.827 95306 > ARG7N-HN 120.731 8.903 108430 > ALA8N-HN 126.058 10.299 92981 > GLN9N-HN 118.747 8.3 127858 > TRP10N-HN 122.375 9.005 102254 > PHE11N-HN 121.361 8.698 114173 > ALA12N-HN 122.049 8.175 59426 > ILE13N-HN 118.046 7.753 129168 > GLN14N-HN 111.972 7.184 73155 > HIS15N-HN 106.081 7.773 119082 > ILE16N-HN 122.326 8.294 156604 > SER17N-HN 120.624 7.734 133194 > LEU18N-HN 128.309 8.66 163834 > ASN19N-HN 115.816 8.45 241597 > > > To match the PDB file later on, this is important. At some point a > conversion will need to be performed. No one has had a need yet, but > anyone could contribute such conversion code. It would require a set > of conversion tables added to 'generic_fns/mol_res_spin.py', and some > new user function arguments for all of the data loading functions to > active the conversion only when asked. This is a perfect small > project for any power users out there ;) > > > First, do we need to add any unused/unassigned residues like this or is this > irrelevant: > > PRO2N-HN None None None > PRO3N-HN None None None > > ? > > > Those shouldn't appear in the 2D peak lists and are not needed. There > are no proline backbone N spin systems with proton attached (I would > hope), so data for such spin systems need not be loaded. relax will > handle all of such issues automatically. > > > 2) Does anyone have a script to automatically convert Sparky lists to the > right format for relax? This is a tedious process to run manually. > > > I don't have one, but maybe someone else on this list does? Such a > script, if written in Python, could be absorbed into > 'generic_fns/mol_res_spin.py' and then be part of the core of relax > (as I described above). > > > 3) After modifying the sample script to run a simple R1 analysis with our > own modified Sparky lists and PDB, the 'python relax_fit.py' command yielded > the following error: > > File "relax_fit.py", line 26, in <module> > pipe.create('rx', 'relax_fit') > NameError: name 'pipe' is not defined > > Any idea what's going on? Are we using the command correctly? > > > From the 'Scripting' section of the introductory chapter of the relax > manual, it says: > > What ever is done within the prompt is also accessible through > scripting (Figure 1.2). Just type your commands into a text file ending > in ‘*.py’ and then at the terminal type > > $ relax your script.py > > The user functions in the script are specific to relax and will not be > available from the Python interpreter. > > I hope this helps. > > Regards, > > Edward > > > > _______________________________________________ > relax (http://www.nmr-relax.com) > > This is the relax-users mailing list > [email protected] > > 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-users > _______________________________________________ relax (http://www.nmr-relax.com) This is the relax-users mailing list [email protected] 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-users

