Dear Maxim and collaborators.
Thank you for a very nice GUI to reconstruct NLS data.
We use it a lot, and save days on time on the magnet.
We have tried to reconstruct data which is recorded "HSQC" like.
For CPMG measurements, and T1RHO, this gives a set of eksperiments with
"planes" of HSQC's, recorded under different magnet settings.
We use coMDD to reconstruct the planes, by taking all the planes into consideration.
And it works very good.
But we find a little "time-bug", at least for qMDD 2.2
When you initialize coMDD, a coproc.sh script is generated and executed.
Part of that looks like this:
--------------------------------------------------
echo HD data disassembling
set i=0
foreach dir ( $procDirs )
echo "setHD coMDD.hd res $nreg ../$dir/MDD/region%02d.res hd%02d.res $i >>&log"
setHD coMDD.hd res $nreg ../$dir/MDD/region%02d.res hd%02d.res $i >>&log
set ecode=$?
if ( $ecode ) then
echo Error while data disassembling
echo "coMDD fail: in $dir"
exit($ecode)
endif
cd ../$dir
./proc1.sh >>&log
set ecode=$?
if ( $ecode ) then
echo Error while indirect FT
exit($ecode)
endif
cd ../coMDD
@ i++
end
----------------------------------------------------
The problem is that, if you have many planes (>50?) the line
" setHD coMDD.hd res $nreg ../$dir/MDD/region%02d.res hd%02d.res $i >>&log "
it not "done" before you ask for the exit code.
And so the whole run is discarded.
The error is not easy to reproduce, since "sometimes" the computer is fast enough to be "done", other times it is not.
So when running in the GUI, it sometimes "not" work, and sometimes it does.
We found the following solution to be fruitful.
We set an array of waiting time to go through, until we get an error code of 0, and with a maximum waiting time of 55 seconds.
--------------------------------------------------------
echo HD data disassembling
set i=0
set cowait=`seq 0 10`
foreach dir ( $procDirs )
foreach cw ( $cowait )
echo " "$dir
echo "In directory: $PWD"
echo "setHD coMDD.hd res $nreg ../$dir/MDD/region%02d.res hd%02d.res $i >>&log"
setHD coMDD.hd res $nreg ../$dir/MDD/region%02d.res hd%02d.res $i >>&log
set ecode=$?
echo "setHD succesfull? 0=yes, 1=no. Result= $ecode"
if ( $ecode ) then
echo "ecode is $ecode. Sleeping $cw"
sleep $cw
else
break
endif
end
echo "In dir: $dir"
if ( $ecode ) then
echo Error while data disassembling
echo "coMDD fail: in $dir"
exit($ecode)
endif
cd ../$dir
echo "Running proc1.sh in ${PWD}"
./proc1.sh >>&log
set ecode=$?
if ( $ecode ) then
echo Error while indirect FT
exit($ecode)
endif
cd ../coMDD
@ i++
end
------------------------------------------
The logfile for running qMDD in shell then looks like this.
Notice that sometimes there is a need for just a little more time (Here 1 second, but sometimes it is waiting 4 rounds=10 s).
---------------------------------------
[8] - Done echo mddsolver hd27.mdd 25 0 50 1e-8 0.005 2345 0 1 hd27.res > hd27.log | csh
localhost:2 CPU load 23%. 0 jobs are running, 2 additional jobs
PIDs are: 14771 14790 14867 14889 14985 15164 15216 15235 15323 15342 15565 15584 15662 15686 15780 15864 16021 16073 16092 16180 16258 16326 16484 16536 16555 16643 16721 16877
/sbinlab2/software/mddnmr2.2/com/queMM.sh : OK
HD data disassembling
prot_pH6_5C_0Murea_t1rho1.proc
In directory: /home/tlinnet/kte/t1rho/t1rho/prot_pH6_5C_0Murea/coMDD
setHD coMDD.hd res 28 ../prot_pH6_5C_0Murea_t1rho1.proc/MDD/region%02d.res hd%02d.res 0 >>&log
setHD succesfull? 0=yes, 1=no. Result= 1
ecode is 1. Sleeping 0
prot_pH6_5C_0Murea_t1rho1.proc
In directory: /home/tlinnet/kte/t1rho/t1rho/prot_pH6_5C_0Murea/coMDD
setHD coMDD.hd res 28 ../prot_pH6_5C_0Murea_t1rho1.proc/MDD/region%02d.res hd%02d.res 0 >>&log
setHD succesfull? 0=yes, 1=no. Result= 0
In dir: prot_pH6_5C_0Murea_t1rho1.proc
Running proc1.sh in /home/tlinnet/kte/t1rho/t1rho/prot_pH6_5C_0Murea/prot_pH6_5C_0Murea_t1rho1.proc
prot_pH6_5C_0Murea_t1rho2.proc
In directory: /home/tlinnet/kte/t1rho/t1rho/prot_pH6_5C_0Murea/coMDD
setHD coMDD.hd res 28 ../prot_pH6_5C_0Murea_t1rho2.proc/MDD/region%02d.res hd%02d.res 1 >>&log
setHD succesfull? 0=yes, 1=no. Result= 0
In dir: prot_pH6_5C_0Murea_t1rho2.proc
Running proc1.sh in /home/tlinnet/kte/t1rho/t1rho/prot_pH6_5C_0Murea/prot_pH6_5C_0Murea_t1rho2.proc
--------------------------
Thanks again for a very nice program.
Maybe the cowait array could be implemented in the coming version of qMDD?
Best
Troels