From aa8819368bf362a3014f2474a7f6c8829bb762e4 Mon Sep 17 00:00:00 2001 From: Ger van Diepen <diepen@astron.nl> Date: Mon, 7 Jul 2008 14:34:22 +0000 Subject: [PATCH] Bug 1207: Improved for real mwimager usage --- CEP/BB/MWImager/src/ConvertParset.cc | 12 ++- CEP/BB/MWImager/src/Makefile.am | 2 +- CEP/BB/MWImager/src/mwimager | 41 ++++++---- CEP/BB/MWImager/src/mwimager-part | 30 ++++--- .../MWImager/test/tconvertimagerparset.stdout | 26 +++---- CEP/BB/MWImager/test/tmwimager.in_cd | 4 +- CEP/BB/MWImager/test/tmwimager.in_vd | 6 +- CEP/BB/MWImager/test/tmwimager.stdout | 78 +++++++++---------- 8 files changed, 111 insertions(+), 88 deletions(-) diff --git a/CEP/BB/MWImager/src/ConvertParset.cc b/CEP/BB/MWImager/src/ConvertParset.cc index 66c35fb5f96..17ef67119ad 100644 --- a/CEP/BB/MWImager/src/ConvertParset.cc +++ b/CEP/BB/MWImager/src/ConvertParset.cc @@ -63,11 +63,15 @@ namespace LOFAR { ostringstream osvec; osvec << restoreBeamStr; out.add ("Cimager.restore.beam", osvec.str()); - // The output name is the MS name minus the possibly trailing .MS. + // The output name is the base MS name minus the possible extension. outname = dataset; - string::size_type pos = outname.rfind (".MS"); + string::size_type pos = outname.rfind ('.'); if (pos != string::npos) { - outname.erase (pos); + outname = outname.substr (0, pos); + } + pos = outname.rfind ('/'); + if (pos != string::npos) { + outname = outname.substr (pos+1); } } { @@ -110,7 +114,7 @@ namespace LOFAR { string angle1 = imin.getString ("ra"); string angle2 = imin.getString ("dec"); string dirType = imin.getString ("directionType"); - string nchan = imin.getString ("nchan"); + string nchan = imin.getString ("nchan", "1"); string shape = imin.getString ("shape"); string frequency = imin.getString ("frequency"); vector<string> stokes = imin.getStringVector ("stokes"); diff --git a/CEP/BB/MWImager/src/Makefile.am b/CEP/BB/MWImager/src/Makefile.am index 29c5840a105..0d25015e794 100644 --- a/CEP/BB/MWImager/src/Makefile.am +++ b/CEP/BB/MWImager/src/Makefile.am @@ -15,7 +15,7 @@ versionmwimager_LDADD = libmwimager.la versionmwimager_DEPENDENCIES = libmwimager.la $(LOFAR_DEPEND) scriptdir = $(bindir) -dist_script_SCRIPTS = mwimager +dist_script_SCRIPTS = mwimager mwimager-part include $(top_srcdir)/Makefile.common diff --git a/CEP/BB/MWImager/src/mwimager b/CEP/BB/MWImager/src/mwimager index 11f5b730706..a99961f61d5 100755 --- a/CEP/BB/MWImager/src/mwimager +++ b/CEP/BB/MWImager/src/mwimager @@ -40,7 +40,7 @@ if test $# = 0; then echo "run as: mwimager parset-file [clusterdesc] [wd] [logfile] [dry] [hfn]" echo " parset-file name of parset file" echo " clusterdesc name of clusterdesc file" - echo " default is $HOME/CEP.cl;usterdesc" + echo " default is $HOME/CEP.clusterdesc" echo " wd working directory in subprocesses" echo " logfile root name of logfile of each subprocess" echo " A sequence number gets appended to it" @@ -54,44 +54,55 @@ else psn=$1 shift fi -cdn=$HOME/CEP.clusterdesc +cdn= if test $# != 0; then cdn=$1 shift fi -wd=0 +if test "$cdn" = ""; then + cdn=$HOME/CEP.clusterdesc +fi +wd= if test $# != 0; then wd=$1 shift fi +if test "$wd" = ""; then + wd=. +fi logfile= if test $# != 0; then logfile=$1 shift fi -dry=0 +dry= if test $# != 0; then dry=$1 shift fi +if test "$dry" = ""; then + dry="nodry" +fi hfn= if test $# != 0; then hfn=$1 shift fi -# Prepend parset with pwd if it has a relative file name. -case "$psn" in - /*) - ;; - *) - psn=$wd/$psn - ;; -esac +# Make all file names absolute. +wd=`cd $wd > /dev/null; pwd` +dn=`dirname $psn` +psn=`cd $dn > /dev/null; pwd`/`basename $psn` +dn=`dirname $cdn` +cdn=`cd $dn > /dev/null; pwd`/`basename $cdn` +if test "$hfn" != ""; then + dn=`dirname $hfn` + hfn=`cd $dn > /dev/null; pwd`/`basename $hfn` +fi # Get dataset name from the parset. -msname=`getparsetvalue $psn dataset` || exit 1 +msvds=`getparsetvalue $psn dataset` || exit 1 # Start the imager processes on the various machines. -echo "startdistproc -mode 0 -nomasterhost -dsn $msname -hfn "$hfn" -cdn $cdn -logfile "$logfile" $pgmpath/mwimager-part $LOFARROOT $psn $wd $dry" -startdistproc -mode 0 -nomasterhost -dsn $msname -hfn "$hfn" -cdn $cdn -logfile "$logfile" $pgmpath/mwimager-part $LOFARROOT $psn $wd $dry +echo "startdistproc -mode 0 -nomasterhost -dsn $msvds -hfn "$hfn" -cdn $cdn -logfile "$logfile" $pgmpath/mwimager-part $LOFARROOT $psn $wd $dry" +startdistproc -mode 0 -nomasterhost -dsn "$msvds" -hfn "$hfn" -cdn "$cdn" -logfile "$logfile" $pgmpath/mwimager-part "$LOFARROOT" "$psn" "$wd" "$dry" diff --git a/CEP/BB/MWImager/src/mwimager-part b/CEP/BB/MWImager/src/mwimager-part index 452fed9e368..d4ca6198849 100755 --- a/CEP/BB/MWImager/src/mwimager-part +++ b/CEP/BB/MWImager/src/mwimager-part @@ -27,6 +27,8 @@ pgmpath=`dirname $0` pgmpath=`cd $pgmpath > /dev/null 2>&1 && pwd` +echo "$@" >> $HOME/xxx + if test $# != 10; then echo "run as: mwimager-part dummy dummy dummy dummy rank ms-part" echo " lofarroot parset-file wd dry" @@ -44,38 +46,42 @@ psn=$4 wd=$5 dry=$6 +psnbase=`basename $psn` + # Initialize lofar environment. . $lroot/lofarinit.sh # Set to working directory. cd $wd # Add channel info to the parset file. -cp $psn $psn.part$seqnr -schan=`getparsetvalue $psn.part$seqnr firstchan 2>/dev/null` || schan=0 -echan=`getparsetvalue $psn.part$seqnr lastchan 2>/dev/null` || echan=-1 -sfreq=`getparsetvalue $msn.vds StartFreqs schan` || exit 1 -efreq=`getparsetvalue $msn.vds EndFreqs echan` || exit 1 -dname=`getparsetvalue $msn.vds Name` || exit 1 -echo "Images.frequency = [$sfreq, $efreq]" >> $psn.part$seqnr -sed -e "s/^ *dataset * =.*/dataset = $dname/" $psn.part$seqnr > $psn.part$seqnr-tmp +cp $psn $psnbase.part$seqnr +schan=`getparsetvalue $psnbase.part$seqnr firstchan 2>/dev/null` || schan=0 +echan=`getparsetvalue $psnbase.part$seqnr lastchan 2>/dev/null` || echan=-1 +sfreq=`getparsetvalue $msn StartFreqs schan` || exit 1 +efreq=`getparsetvalue $msn EndFreqs echan` || exit 1 +dname=`getparsetvalue $msn Name` || exit 1 +echo "$schan $echan $sfreq $efreq $dname" >> $HOME/xxx +echo "Images.frequency = [$sfreq, $efreq]" >> $psnbase.part$seqnr +sed -e "s%^ *dataset * =.*%dataset = $dname%" $psnbase.part$seqnr > $psnbase.part$seqnr-tmp mv $psn.part$seqnr-tmp $psn.part$seqnr # Convert parset file from SAS format to cimager format. # Normally convertimagerparset is in the same installed directory as the script, # but in case of 'make check' it is in the src directory. if test -e $pgmpath/convertimagerparset; then - $pgmpath/convertimagerparset $psn.part$seqnr $psn.part$seqnr.cvt + $pgmpath/convertimagerparset $psnbase.part$seqnr $psnbase.part$seqnr.cvt else - ../src/convertimagerparset $psn.part$seqnr $psn.part$seqnr.cvt + ../src/convertimagerparset $psnbase.part$seqnr $psnbase.part$seqnr.cvt fi if test "$dry" = dry; then - cat $psn.part$seqnr.cvt + cat $psnbase.part$seqnr.cvt exit 0 fi # Run the imager. -~/askapsoft/Code/Components/Synthesis/synthesis/trunk/apps/cimager.sh -inputs $psn.part$seqnr.cvt +echo "~/askapsoft/Code/Components/Synthesis/synthesis/trunk/apps/cimager.sh -inputs $psnbase.part$seqnr.cvt" > $HOME/xxx +~/askapsoft/Code/Components/Synthesis/synthesis/trunk/apps/cimager.sh -inputs $psnbase.part$seqnr.cvt # Convert to FITS. ## image2fits diff --git a/CEP/BB/MWImager/test/tconvertimagerparset.stdout b/CEP/BB/MWImager/test/tconvertimagerparset.stdout index 1eb86a233c2..78c010f1e53 100644 --- a/CEP/BB/MWImager/test/tconvertimagerparset.stdout +++ b/CEP/BB/MWImager/test/tconvertimagerparset.stdout @@ -1,17 +1,17 @@ -Cimager.Images.Names=[image.i.abc/def_Dirty,image.q.abc/def_Dirty,image.u.abc/def_Dirty,image.v.abc/def_Dirty] +Cimager.Images.Names=[image.i.def_Dirty,image.q.def_Dirty,image.u.def_Dirty,image.v.def_Dirty] Cimager.Images.cellsize=[240arcsec,240arcsec] -Cimager.Images.image.i.abc/def_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.i.abc/def_Dirty.frequency=[12345678, 12345679] -Cimager.Images.image.i.abc/def_Dirty.nchan=1 -Cimager.Images.image.q.abc/def_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.q.abc/def_Dirty.frequency=[12345678, 12345679] -Cimager.Images.image.q.abc/def_Dirty.nchan=1 -Cimager.Images.image.u.abc/def_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.u.abc/def_Dirty.frequency=[12345678, 12345679] -Cimager.Images.image.u.abc/def_Dirty.nchan=1 -Cimager.Images.image.v.abc/def_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.v.abc/def_Dirty.frequency=[12345678, 12345679] -Cimager.Images.image.v.abc/def_Dirty.nchan=1 +Cimager.Images.image.i.def_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.i.def_Dirty.frequency=[12345678, 12345679] +Cimager.Images.image.i.def_Dirty.nchan=1 +Cimager.Images.image.q.def_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.q.def_Dirty.frequency=[12345678, 12345679] +Cimager.Images.image.q.def_Dirty.nchan=1 +Cimager.Images.image.u.def_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.u.def_Dirty.frequency=[12345678, 12345679] +Cimager.Images.image.u.def_Dirty.nchan=1 +Cimager.Images.image.v.def_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.v.def_Dirty.frequency=[12345678, 12345679] +Cimager.Images.image.v.def_Dirty.nchan=1 Cimager.Images.shape=[2048, 2048] Cimager.MinUV=1.0 Cimager.datacolumn=CORRECTED_DATA diff --git a/CEP/BB/MWImager/test/tmwimager.in_cd b/CEP/BB/MWImager/test/tmwimager.in_cd index 7ac410e08f5..0460785ee93 100644 --- a/CEP/BB/MWImager/test/tmwimager.in_cd +++ b/CEP/BB/MWImager/test/tmwimager.in_cd @@ -1,6 +1,8 @@ -ClusterName = cl +ClusterName = test NNodes = 2 Node0.NodeName = localhost Node0.NodeFileSys = [node1:/usr] +Node0.NodeMountPoints = / Node1.NodeName = localhost Node1.NodeFileSys = [node1:/usr] +Node1.NodeMountPoints = / diff --git a/CEP/BB/MWImager/test/tmwimager.in_vd b/CEP/BB/MWImager/test/tmwimager.in_vd index 97c81980069..e6d7b16e00f 100644 --- a/CEP/BB/MWImager/test/tmwimager.in_vd +++ b/CEP/BB/MWImager/test/tmwimager.in_vd @@ -4,7 +4,7 @@ EndTime = 2 StepTime = 0.5 NParts = 3 -Part0.Name = tmwimager.in_ms0 +Part0.Name = tmwimager.in_ms0.vds Part0.FileSys = node1:/usr Part0.StartTime = 0 Part0.EndTime = 2 @@ -13,7 +13,7 @@ Part0.NChan = [2] Part0.StartFreqs = [20,25] Part0.EndFreqs = [22,30] -Part1.Name = tmwimager.in_ms1 +Part1.Name = tmwimager.in_ms1.vds Part1.FileSys = node1:/usr Part1.StartTime = 0 Part1.EndTime = 2 @@ -22,7 +22,7 @@ Part1.NChan = [2] Part1.StartFreqs = [120,125] Part1.EndFreqs = [122,130] -Part2.Name = tmwimager.in_ms2 +Part2.Name = tmwimager.in_ms2.vds Part2.FileSys = node1:/usr Part2.StartTime = 0 Part2.EndTime = 2 diff --git a/CEP/BB/MWImager/test/tmwimager.stdout b/CEP/BB/MWImager/test/tmwimager.stdout index cd7c439d199..8595463a546 100644 --- a/CEP/BB/MWImager/test/tmwimager.stdout +++ b/CEP/BB/MWImager/test/tmwimager.stdout @@ -5,20 +5,20 @@ ssh localhost /Users/diepen/sim/LOFAR/CEP/BB/MWImager/src/mwimager-part socket l ssh localhost /Users/diepen/sim/LOFAR/CEP/BB/MWImager/src/mwimager-part socket localhost 0 3 1 tmwimager.in_ms1 /Users/diepen/sim/LOFAR/installed/gnu_opt /Users/diepen/sim/LOFAR/CEP/BB/MWImager/build/gnu_opt/test/tmwimager.parset /Users/diepen/sim/LOFAR/CEP/BB/MWImager/build/gnu_opt/test dry ssh localhost /Users/diepen/sim/LOFAR/CEP/BB/MWImager/src/mwimager-part socket localhost 0 3 2 tmwimager.in_ms2 /Users/diepen/sim/LOFAR/installed/gnu_opt /Users/diepen/sim/LOFAR/CEP/BB/MWImager/build/gnu_opt/test/tmwimager.parset /Users/diepen/sim/LOFAR/CEP/BB/MWImager/build/gnu_opt/test dry <<< -Cimager.Images.Names=[image.i.tmwimager.in_ms0_Dirty,image.q.tmwimager.in_ms0_Dirty,image.u.tmwimager.in_ms0_Dirty,image.v.tmwimager.in_ms0_Dirty] +Cimager.Images.Names=[image.i.tmwimager_Dirty,image.q.tmwimager_Dirty,image.u.tmwimager_Dirty,image.v.tmwimager_Dirty] Cimager.Images.cellsize=[240arcsec,240arcsec] -Cimager.Images.image.i.tmwimager.in_ms0_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.i.tmwimager.in_ms0_Dirty.frequency=[20, 22] -Cimager.Images.image.i.tmwimager.in_ms0_Dirty.nchan=1 -Cimager.Images.image.q.tmwimager.in_ms0_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.q.tmwimager.in_ms0_Dirty.frequency=[20, 22] -Cimager.Images.image.q.tmwimager.in_ms0_Dirty.nchan=1 -Cimager.Images.image.u.tmwimager.in_ms0_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.u.tmwimager.in_ms0_Dirty.frequency=[20, 22] -Cimager.Images.image.u.tmwimager.in_ms0_Dirty.nchan=1 -Cimager.Images.image.v.tmwimager.in_ms0_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.v.tmwimager.in_ms0_Dirty.frequency=[20, 22] -Cimager.Images.image.v.tmwimager.in_ms0_Dirty.nchan=1 +Cimager.Images.image.i.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.i.tmwimager_Dirty.frequency=[20, 22] +Cimager.Images.image.i.tmwimager_Dirty.nchan=1 +Cimager.Images.image.q.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.q.tmwimager_Dirty.frequency=[20, 22] +Cimager.Images.image.q.tmwimager_Dirty.nchan=1 +Cimager.Images.image.u.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.u.tmwimager_Dirty.frequency=[20, 22] +Cimager.Images.image.u.tmwimager_Dirty.nchan=1 +Cimager.Images.image.v.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.v.tmwimager_Dirty.frequency=[20, 22] +Cimager.Images.image.v.tmwimager_Dirty.nchan=1 Cimager.Images.shape=[2048, 2048] Cimager.MinUV=1.0 Cimager.datacolumn=CORRECTED_DATA @@ -39,20 +39,20 @@ Cimager.solver.Clean.gain=1.0 Cimager.solver.Clean.niter=10 Cimager.solver.Clean.scales=[0, 3] Cimager.solver.Clean.verbose=True -Cimager.Images.Names=[image.i.tmwimager.in_ms1_Dirty,image.q.tmwimager.in_ms1_Dirty,image.u.tmwimager.in_ms1_Dirty,image.v.tmwimager.in_ms1_Dirty] +Cimager.Images.Names=[image.i.tmwimager_Dirty,image.q.tmwimager_Dirty,image.u.tmwimager_Dirty,image.v.tmwimager_Dirty] Cimager.Images.cellsize=[240arcsec,240arcsec] -Cimager.Images.image.i.tmwimager.in_ms1_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.i.tmwimager.in_ms1_Dirty.frequency=[120, 122] -Cimager.Images.image.i.tmwimager.in_ms1_Dirty.nchan=1 -Cimager.Images.image.q.tmwimager.in_ms1_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.q.tmwimager.in_ms1_Dirty.frequency=[120, 122] -Cimager.Images.image.q.tmwimager.in_ms1_Dirty.nchan=1 -Cimager.Images.image.u.tmwimager.in_ms1_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.u.tmwimager.in_ms1_Dirty.frequency=[120, 122] -Cimager.Images.image.u.tmwimager.in_ms1_Dirty.nchan=1 -Cimager.Images.image.v.tmwimager.in_ms1_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.v.tmwimager.in_ms1_Dirty.frequency=[120, 122] -Cimager.Images.image.v.tmwimager.in_ms1_Dirty.nchan=1 +Cimager.Images.image.i.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.i.tmwimager_Dirty.frequency=[120, 122] +Cimager.Images.image.i.tmwimager_Dirty.nchan=1 +Cimager.Images.image.q.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.q.tmwimager_Dirty.frequency=[120, 122] +Cimager.Images.image.q.tmwimager_Dirty.nchan=1 +Cimager.Images.image.u.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.u.tmwimager_Dirty.frequency=[120, 122] +Cimager.Images.image.u.tmwimager_Dirty.nchan=1 +Cimager.Images.image.v.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.v.tmwimager_Dirty.frequency=[120, 122] +Cimager.Images.image.v.tmwimager_Dirty.nchan=1 Cimager.Images.shape=[2048, 2048] Cimager.MinUV=1.0 Cimager.datacolumn=CORRECTED_DATA @@ -73,20 +73,20 @@ Cimager.solver.Clean.gain=1.0 Cimager.solver.Clean.niter=10 Cimager.solver.Clean.scales=[0, 3] Cimager.solver.Clean.verbose=True -Cimager.Images.Names=[image.i.tmwimager.in_ms2_Dirty,image.q.tmwimager.in_ms2_Dirty,image.u.tmwimager.in_ms2_Dirty,image.v.tmwimager.in_ms2_Dirty] +Cimager.Images.Names=[image.i.tmwimager_Dirty,image.q.tmwimager_Dirty,image.u.tmwimager_Dirty,image.v.tmwimager_Dirty] Cimager.Images.cellsize=[240arcsec,240arcsec] -Cimager.Images.image.i.tmwimager.in_ms2_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.i.tmwimager.in_ms2_Dirty.frequency=[220, 222] -Cimager.Images.image.i.tmwimager.in_ms2_Dirty.nchan=1 -Cimager.Images.image.q.tmwimager.in_ms2_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.q.tmwimager.in_ms2_Dirty.frequency=[220, 222] -Cimager.Images.image.q.tmwimager.in_ms2_Dirty.nchan=1 -Cimager.Images.image.u.tmwimager.in_ms2_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.u.tmwimager.in_ms2_Dirty.frequency=[220, 222] -Cimager.Images.image.u.tmwimager.in_ms2_Dirty.nchan=1 -Cimager.Images.image.v.tmwimager.in_ms2_Dirty.direction=[230.35,-10,345,J2000] -Cimager.Images.image.v.tmwimager.in_ms2_Dirty.frequency=[220, 222] -Cimager.Images.image.v.tmwimager.in_ms2_Dirty.nchan=1 +Cimager.Images.image.i.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.i.tmwimager_Dirty.frequency=[220, 222] +Cimager.Images.image.i.tmwimager_Dirty.nchan=1 +Cimager.Images.image.q.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.q.tmwimager_Dirty.frequency=[220, 222] +Cimager.Images.image.q.tmwimager_Dirty.nchan=1 +Cimager.Images.image.u.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.u.tmwimager_Dirty.frequency=[220, 222] +Cimager.Images.image.u.tmwimager_Dirty.nchan=1 +Cimager.Images.image.v.tmwimager_Dirty.direction=[230.35,-10,345,J2000] +Cimager.Images.image.v.tmwimager_Dirty.frequency=[220, 222] +Cimager.Images.image.v.tmwimager_Dirty.nchan=1 Cimager.Images.shape=[2048, 2048] Cimager.MinUV=1.0 Cimager.datacolumn=CORRECTED_DATA -- GitLab