I once was quite familiar with the Modelfree code base (which is in Fortran) as I did a bit of debugging to solve a few problems. These fixes are in the current Modelfree version. However I don't remember the formatting string for the STAR format output for the model-free parameters. I could possibly pull this formatting string out from the Modelfree code base, and that may allow the columns for these parameters to be split up exactly. Actually, here it is from the modelout.F file: write(iunit,'(10x,i10,2f15.3,i5,4f15.3)', 1 iostat=ierr,err=999) 1 resnum(i),guess(4,i),punc(4,i), 1 inlist(4,i),simpar(4,i),simvar(4,i),simabs(4,i), 1 simgry(4,i) So we have 10 spaces, an interger right justified in a column of 10 characters (the residue number, I forgot Modelfree only handles one spin per residue), 2 floats of 15.3, an integer in a column of 5 char, and 4 final columns of floats to 3 decimals of a width of 15 char. These correspond to: _Residue, _Fit_value, _Fit_error, _Flag, _Sim_value, _Sim_error, _Sim_abs, _Geary-Z So this could be relatively easy to parse, if we knew exactly what Fortran does when these columns overflow! To get a single space between columns, you'd need a '1x' between all formatting strings. Regards, Edward On Sun, Apr 13, 2008 at 12:34 AM, Sébastien Morin <sebastien.morin.1@xxxxxxxxx> wrote:
Yeah, right. That's why I asked. I didn't think that this change would correct the problem I found this week... Concerning that, I wrote an e-mail to Arthur Palmer concerning this formatting issue. I don't know if it will be solved in the near future, so this would maybe be a good idea to add something for catching this bug also in relax... If I have an idea, I'll tell you. Ciao ! Séb Edward d'Auvergne wrote: Hi, No, no, this is the old bug with many *'s in a column, specifically for Rex, that I described here (https://mail.gna.org/public/relax-users/2008-04/msg00020.html, Message-id: <7f080ed10804090112m437f001ar81399aa9f79cae9c@xxxxxxxxxxxxxx>). This will not catch this other column fusion Modelfree bug. Regards, Edward On Sat, Apr 12, 2008 at 11:20 PM, Sébastien Morin <sebastien.morin.1@xxxxxxxxx> wrote: Hi Ed, Nice that you found this one. So you say that this will catch the ModelFree fused column bug ? Ciao ! Séb Edward d'Auvergne wrote: Hi, I've found one bug below. Note though that this is an ancient bug I introduced many, many years ago and affects the code for catching the Modelfree fused column bug (https://mail.gna.org/public/relax-users/2008-04/msg00018.html, Message-id: <47FB8D12.8090502@xxxxxxxxx>). On Sat, Apr 12, 2008 at 10:39 PM, <sebastien.morin.1@xxxxxxxxx> wrote: Author: semor Date: Sat Apr 12 22:39:33 2008 New Revision: 5607 URL: http://svn.gna.org/viewcvs/relax?rev=5607&view=rev Log: Corrected more of the bugs introduced in former revisions as part of the move to the new design. These were spotted by Edward d'Auvergne in a post at: https://mail.gna.org/public/relax-devel/2008-04/msg00056.html (# Message-id: <1208030368.8064.47.camel@localhost>) Modified: 1.3/generic_fns/palmer.py Modified: 1.3/generic_fns/palmer.py URL: http://svn.gna.org/viewcvs/relax/1.3/generic_fns/palmer.py?rev=5607&r1=5606&r2=5607&view=diff ============================================================================== --- 1.3/generic_fns/palmer.py (original) +++ 1.3/generic_fns/palmer.py Sat Apr 12 22:39:33 2008 @@ -505,7 +505,7 @@ chdir(orig_dir) - def extract(self, dir): + def extract(self, dir, spin_id=None): """Function for extracting the Modelfree4 results out of the 'mfout' file.""" # Alias the current data pipe. @@ -545,65 +545,63 @@ # Loop over the sequence. pos = 0 - for i in xrange(len(cdp.res)): - # Reassign the data structure. - data = cdp.res[i] + for spin in spin_loop(spin_id): # Skip unselected residues. - if not data.select: + if not spin.select: continue # Missing data sets. - if not hasattr(data, 'model'): + if not hasattr(spin, 'model'): continue # No relaxation data. - if not hasattr(data, 'num_frq'): + if not hasattr(spin, 'num_frq'): continue # Get the S2 data. - if 'S2' in data.params: - data.s2, data.s2_err = self.get_mf_data(self.mfout_S2_pos + pos) + if 'S2' in spin.params: + spin.s2, spin.s2_err = self.get_mf_data(self.mfout_S2_pos + pos) # Get the S2f data. - if 'S2f' in data.params or 'S2s' in data.params: - data.s2f, data.s2f_err = self.get_mf_data(self.mfout_S2f_pos + pos) + if 'S2f' in spin.params or 'S2s' in spin.params: + spin.s2f, spin.s2f_err = self.get_mf_data(self.mfout_S2f_pos + pos) # Get the S2s data. - if 'S2f' in data.params or 'S2s' in data.params: - data.s2s, data.s2s_err = self.get_mf_data(self.mfout_S2s_pos + pos) + if 'S2f' in spin.params or 'S2s' in spin.params: + spin.s2s, spin.s2s_err = self.get_mf_data(self.mfout_S2s_pos + pos) # Get the te data. - if 'te' in data.params: - data.te, data.te_err = self.get_mf_data(self.mfout_te_pos + pos) - data.te = data.te / 1e12 - data.te_err = data.te_err / 1e12 + if 'te' in spin.params: + spin.te, spin.te_err = self.get_mf_data(self.mfout_te_pos + pos) + spin.te = spin.te / 1e12 + spin.te_err = spin.te_err / 1e12 # Get the ts data. - if 'ts' in data.params: - data.ts, data.ts_err = self.get_mf_data(self.mfout_te_pos + pos) - data.ts = data.ts / 1e12 - data.ts_err = data.ts_err / 1e12 + if 'ts' in spin.params: + spin.ts, spin.ts_err = self.get_mf_data(self.mfout_te_pos + pos) + spin.ts = spin.ts / 1e12 + spin.ts_err = spin.ts_err / 1e12 # Get the Rex data. - if 'Rex' in data.params: - data.rex, data.rex_err = self.get_mf_data(self.mfout_Rex_pos + pos) + if 'Rex' in spin.params: + spin.rex, spin.rex_err = self.get_mf_data(self.mfout_Rex_pos + pos) try: - data.rex = data.rex / (2.0 * pi * data.frq[0])**2 - data.rex_err = data.rex_err / (2.0 * pi * data.frq[0])**2 + spin.rex = spin.rex / (2.0 * pi * spin.frq[0])**2 + spin.rex_err = spin.rex_err / (2.0 * pi * spin.frq[0])**2 except TypeError: # Bug in Modelfree4's mfout output file (fusion of columns). - data.rex = None - data_rex_err = None + spin.rex = None + spin_rex_err = None Here is my bug. The last line should read 'spin.rex_eror = None' rather than 'spin_res_error'. I'll fix this bug in both the 1.2 and 1.3 lines. Cheers, Edward _______________________________________________ relax (http://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