This script
makes a map from specified raw time-series data using the algorithm described at
http://pipelinesandarchives.blogspot.co.uk/2012/10/inside-out-map-making.html. It
runs SMURF:MAKEMAP multiple times, performing a single iteration of the Dynamic
Iterative Map-Maker algorithm on each invocation, including data from all chunks. Each map
created by MAKEMAP is used as the initial sky estimate for the next invocation. MAKEMAP
subtracts this initial sky estimate from the time-series data before starting the first (and only)
iteration, and then adds the initial sky estimate back on at the end prior to creating the output
map.
The script produces several intermediate files: a set of cleaned time-series files that may be 2 to 3 times
the size of the entire set of raw data files included in the map, and a 2D map for every iteration. These
files are placed in a newly created directory that is normally deleted before the script exits. The files
can be retained for debugging purposes if required by running the script with "
retain=yes"
on the
command line.
The temporary files are placed in a directory name "
NDG_xxxxx"
, located within the directory
specified by environment variable STAR_TEMP. If STAR_TEMP is not defined, they are
placed in the system’
s temporary directory (e.g. "
/tmp"
).
skyloop in out niter
pixsize config [itermap] [ref] [mask2] [mask3] [extra] [ipref] [retain] [msg_filter] [ilevel]
[glevel] [logfile] [restart]
CHUNKWGT = _LOGICAL (Read)
Controls the
weight used for each chunk. If False, then the weights are determined by the value of the
CHUNKWGT FITS header in each input time-stream data file (unit weight is used for any data
file that has no CHUNKWGT FITS header). If True, the weight for each chunk is based
on the normalised map change for each chunk calculated on the previous iteration - the
weight for a chunk is the ratio of the mean of all the chunk map changes to the chunk’
s own map change. Weights above 1.0 are limited to 1.0. [False]
CONFIG = LITERAL
(Read)
The MAKEMAP configuration parameter values to use. Additions will be made as
follows:
-
First iteration:
numiter=1
noi.export=1
exportNDF=(lut,ext,res,qua)
noexportsetbad=1
exportclean=1
ast.zero_notlast = 0
flt.zero_notlast = 0
com.zero_notlast = 0
pca.zero_notlast = 0
itermap=0
shortmap=0
bolomap=0
flagmap=undef
sampcube=0
diag.append=0
-
Subsequent iterations:
numiter=1
noi.import=1
exportNDF=(res,qua)
doclean=0
importsky=ref
importlut=1
ext.import=1
ast.zero_notlast = 0
flt.zero_notlast = 0
com.zero_notlast = 0
pca.zero_notlast = 0
ast.zero_mask0 = undef
flt.zero_mask0 = undef
com.zero_mask0 = undef
pca.zero_mask0 = undef
flt.notfirst = 0
pca.notfirst = 0
pln.notfirst = 0
smo.notfirst = 0
itermap=0
shortmap=0
bolomap=0
flagmap=undef
sampcube=0
diag.append=1
downsampscale=0
downsampfreq=0
fakemap=undef
-
Last iteration:
numiter=1
noi.import=1
doclean=0
importsky=ref
importlut=1
ext.import=1
ast.zero_notlast = 1
flt.zero_notlast = 1
com.zero_notlast = 1
pca.zero_notlast = 1
flt.notfirst = 0
pca.notfirst = 0
pln.notfirst = 0
smo.notfirst = 0
itermap=0
shortmap=value specified
by parameter CONFIG
bolomap=value specified
by parameter CONFIG
flagmap=undef
sampcube=0
diag.append=1
downsampscale=0
downsampfreq=0
fakemap=undef
EXTRA = LITERAL (Read)
A string holding any extra command line options to be passed to
MAKEMAP (all invocations). [!]
GLEVEL = LITERAL (Read)
Controls the level of information to
write to a text log file. Allowed values are as for "
ILEVEL"
. The log file to create is specified via
parameter "
LOGFILE. ["
ATASK"
]
ILEVEL = LITERAL (Read)
Controls the level of
information displayed on the screen by the script. It can take any of the following values (note,
these values are purposefully different to the SUN/104 values to avoid confusion in their
effects):
-
"
NONE"
: No screen output is created
-
"
CRITICAL"
: Only critical messages are displayed such as warnings.
-
"
PROGRESS"
: Extra messages indicating script progress are also displayed.
-
"
ATASK"
: Extra messages are also displayed describing each atask invocation. Lines starting with "
"
indicate the command name and parameter values, and subsequent lines hold the screen output
generated by the command.
-
"
DEBUG"
: Extra messages are also displayed containing unspecified debugging information.
["
PROGRESS"
]
IN = NDF (Read)
The group of time series NDFs to include in the output map.
INITIALSKY = NDF (Read)
An NDF holding an initial guess at the final map. This should contain
any a priori expectations of what the final map should look like. It is used to define the starting point
for the iterative map-making algorithm, in place of the usual flat map full of zeros. The
data units in the supplied NDF must be "
pW"
. If an NDF is supplied, it is also used to
define the WCS and pixel bounds of the output map (any NDF supplied for parameter
REF is then ignored). [!]
IPREF = NDF (Read)
An existing NDF that is to be used to
define the correction to be made for instrumental polarisation (IP). It is only accessed if
the input data contains POL2 Q or U time-series values, as created by SMURF:CALCQU.
No IP correction is made if a null (!) value is supplied. If a non-null value is supplied, it
should be an NDF that holds the total intensity (in pW) within the area of sky covered
by the output map. The supplied NDF need not be pre-aligned with the output map -
the WCS information in the NDF will be used to aligned them. For each Q or U value in
the input time-streams, the corresponding total intensity (I) value is found by sampling
the supplied IPREF map at the sky position of the Q/U value. This I value is multipled
by a factor that depends on elevation and focal plane position, to get the IP correction.
These Q and U corrections are rotated so that they use the same reference direction as
the input Q/U data, corrected for extinction, and are then subtracted from the input Q
or U value before going on to make a map from the corrected values. [!]
ITERMAP =
NDF (Write)
A 3D NDF to create holding the maps from all iterations. [!]
LOGFILE =
LITERAL (Read)
The name of the log file to create if GLEVEL is not NONE. The default is "
command.log"
, where command
is the name of the executing script (minus any trailing "
.py"
suffix), and will be created in the current
directory. Any file with the same name is over-written. []
NITER = _INTEGER (Read)
The number
of iterations to perform. A positive value specifies a fixed number of iterations to perform. A negative
value indicates that iterations should continue until the normalized change in the map between
iterations is less than the value of the "
maptol"
parameter in the configuration supplied by parameter
CONFIG (a maptol value of 0.05 is used if CONFIG does not specify maptol). If a value of
zero is supplied for NITER, the value used will be read from the "
numiter"
parameter
in the configuration. [0]
MASK2 = NDF (Read)
An existing NDF that can be used to
specify a second external mask for use with either the AST, PCA, FLT or COM model. See
configuration parameters AST.ZERO_MASK, PCA.ZERO_MASK, FLT.ZERO_MASK and
COM.ZERO_MASK. Note, it is assumed that this image is aligned in pixel coordinate with the output
map. [!]
MASK3 = NDF (Read)
An existing NDF that can be used to specify a third
external mask for use with either the AST, PCA, FLT or COM model. See configuration
parameters AST.ZERO_MASK, PCA.ZERO_MASK, FLT.ZERO_MASK and COM.ZERO_MASK.
Note, it is assumed that this image is aligned in pixel coordinate with the output map. [!]
MSG_FILTER = LITERAL (Read)
Controls the default level of information reported
by Starlink atasks invoked within the executing script. The accepted values are the list
defined in SUN/104 ("
None"
, "
Quiet"
, "
Normal"
, "
Verbose"
, etc). ["
Normal"
]
OBSDIR = LITERAL (Read)
The name of a directory in which to put maps made from
the individual observations. These are generated on the final iteration. If null is supplied,
individual observation maps will not be created. Each map is stored in a file with name
UT_OBS.sdf.
If a single observation is split into multiple chunks, the first chunk will use the above
naming scheme but the second and subsequent chunks will have names of the form
UT_OBS_CHUNK.sdf.
[!]
OUT = NDF (Write)
The NDF holding the output map.
PIXSIZE = _REAL (Read)
Pixel
dimensions in the output image, in arcsec. The same value will be used for both axes. The default
depends on the wavelength of the input data. []
REF = NDF (Read)
An existing NDF that is to be
used to define the output grid. If supplied, the output grid will be aligned with the supplied reference
NDF. The reference can be either 2D or 3D and the spatial frame will be extracted. If a null (!)
value is supplied then the output grid is determined by parameters REFLON, REFLAT,
etc. In addition, this NDF can be used to mask the AST, PCA, FLT or COM model. See
configuration parameters AST.ZERO_MASK, PCA.ZERO_MASK, FLT.ZERO_MASK and
COM.ZERO_MASK.
This parameter is only accessed if a null value is supplied for INITIALSKY. Otherwise, the NDF
supplied as the initial sky is used to define the output grid.
On the second and subsequent invocations of MAKEMAP, any supplied REF image is replaced by the
map created by the previous invocation of MAKEMAP. [!]
RESTART = LITERAL (Read)
If a value is
assigned to this parameter, it should be the path to a directory containing the intermediate files
created by a previous run of SKYLOOP. If supplied, execution of skyloop will restart from the point
where the previous run finished. This is useful for continuing runs that have been interupted
accidentally. The path to the intermediate files can be found by examining the log file created by the
previous run. [!]
RETAIN = _LOGICAL (Read)
Should the temporary directory containing the
intermediate files created by this script be retained? If not, it will be deleted before the script exits. If
retained, a message will be displayed at the end specifying the path to the directory. [FALSE]