Hi Ed, WOW ! I noticed the differences for local parameters between the two versions, but never tested a completed diffusion tensor optimization... The differences are huge ! They're so big that users should probably tell which version they used when publishing... i.e. ModelFree-4.20-Portland or ModelFree-4.20-gcc... Also, maybe you're right, maybe the speed is not the best test for quality here... What do you think about simply printing a few lines summarising the text below in the user manual, hence in the code as some comments ? Ciao Séb Edward d'Auvergne wrote:
Hi, I've noticed this difference too. But I think I'm too much of a Fortran sceptic! A long time ago, I went through the Modelfree4 source code with a fine toothed comb and found 4 bugs in there. A few of these were code issues which had no effect on the Portland compiler (well the compilation part anyway) but was causing gcc to complain loudly. Rightfully so as there was an undeclared variable used as a counter in a loop - it's value was garbage. One of the bugs was a problem with the Levenberg-Marquardt algorithm and that, together with the other problems found in: d'Auvergne, E. J. and Gooley, P. R. (2008). Optimisation of NMR dynamic models I. Minimisation algorithms and their performance within the model-free and Brownian rotational diffusion spaces. J. Biomol. NMR, 40(2), 107-119. (http://dx.doi.org/10.1007/s10858-007-9214-2) was the reason for Modelfree 4.20 to be released. The other bugs caught by gcc, and the undeclared variable were the reason for Modelfree 4.16 (http://cpmcnet.columbia.edu/dept/gsas/biochem/labs/palmer/software/modelfree.html). So I'm not sure if the speed of the two binaries is the best measure of quality. It could be that the Portland version is faster due to a bug. Or that the gcc one is slower due to higher precision. Who knows? I'm not sure how we could advise the user. Maybe a print out at the start of palmer.execute()? I think it would be best to advise the user to only use Modelfree4 as a test and that it should be compared to the much higher precision - hence slower - relax results. It might also be worth stating that the Portland and gcc versions give different results. Eg in the system test I created for it, one finds the diffusion tensors: gcc: tm = 8.964 Dratio = 1.324 theta = -52.070 phi = 2.377 Portland: tm = 8.443 Dratio = 1.053 theta = 68.864 phi = 73.913 There is no glide or reflection symmetry here, so the results are quite different. Regards, Edward