diff --git a/SAS/XML_generator/src/xmlgen.py b/SAS/XML_generator/src/xmlgen.py index 1b8776095db50c37eef34162967a89f97d1f5885..d963cc622b4fdd0004c7ee21f4bd1d2089cd9bad 100755 --- a/SAS/XML_generator/src/xmlgen.py +++ b/SAS/XML_generator/src/xmlgen.py @@ -26,7 +26,7 @@ # Last change by : $Author: renting $ # Change date : $Date: 2016-05-18 11:47:57 +0200 (wo, 18 mei 2016) $ -VERSION = "4.0.3" +VERSION = "4.0.5" import sys, getopt, time from xml.sax.saxutils import escape as XMLescape @@ -49,13 +49,13 @@ WHICH_CS = ['IQUV', 'I', 'XXYY'] WEIGHTING_SCHEMES = ['uniform', 'superuniform', 'natural', 'briggs', 'briggsabs', 'radial'] IMAGING_PIPELINE_TYPES = ['MSSS', 'standard', 'none'] # MODES = ['Calobs','Calbeam','MultiObs'] -PROCESSING = ['Preprocessing', 'Calibration', 'Pulsar', 'Imaging', 'LongBaseline', 'Prefactor', 'none'] +PROCESSING = ['Preprocessing', 'Calibration', 'Pulsar', 'Imaging', 'LongBaseline', 'Prefactor', 'PreprocessingNoFlagging', 'none'] CALIBRATION_MODE = ['internal', 'external', 'none'] -ALL_STATIONS = 'CS001,CS002,CS003,CS004,CS005,CS006,CS007,CS011,CS013,CS017,CS021,CS024,CS026,CS028,CS030,CS031,CS032,CS101,CS103,CS201,CS301,CS302,CS401,CS501,RS106,RS205,RS208,RS210,RS305,RS306,RS307,RS310,RS406,RS407,RS409,RS503,RS508,RS509,DE601,DE602,DE603,DE604,DE605,FR606,SE607,UK608,DE609,PL610,PL611,PL612,IE613' +ALL_STATIONS = 'CS001,CS002,CS003,CS004,CS005,CS006,CS007,CS011,CS013,CS017,CS021,CS024,CS026,CS028,CS030,CS031,CS032,CS101,CS103,CS201,CS301,CS302,CS401,CS501,RS106,RS205,RS208,RS210,RS305,RS306,RS307,RS310,RS406,RS407,RS409,RS503,RS508,RS509,DE601,DE602,DE603,DE604,DE605,FR606,SE607,UK608,DE609,PL610,PL611,PL612,IE613,LV614' CORE_STATIONS = 'CS001,CS002,CS003,CS004,CS005,CS006,CS007,CS011,CS013,CS017,CS021,CS024,CS026,CS028,CS030,CS031,CS032,CS101,CS103,CS201,CS301,CS302,CS401,CS501' SUPERTERP_STATIONS = 'CS002,CS003,CS004,CS005,CS006,CS007' REMOTE_STATIONS = 'RS106,RS205,RS208,RS210,RS305,RS306,RS307,RS310,RS406,RS407,RS409,RS503,RS508,RS509' -INTERNATIONAL_STATIONS = 'DE601,DE602,DE603,DE604,DE605,FR606,SE607,UK608,DE609,PL610,PL611,PL612,IE613' +INTERNATIONAL_STATIONS = 'DE601,DE602,DE603,DE604,DE605,FR606,SE607,UK608,DE609,PL610,PL611,PL612,IE613,LV614' NL_STATIONS = 'CS001,CS002,CS003,CS004,CS005,CS006,CS007,CS011,CS013,CS017,CS021,CS024,CS026,CS028,CS030,CS031,CS032,CS101,CS103,CS201,CS301,CS302,CS401,CS501,RS106,RS205,RS208,RS210,RS305,RS306,RS307,RS310,RS406,RS407,RS409,RS503,RS508,RS509' DEFAULT_TASKS_PER_NODE = 11 DEFAULT_CORES_PER_TASK = 2 @@ -395,7 +395,7 @@ def writeXMLObs(ofile, name, descr, topo, predecessor_topo, attrname, projname, def writeXMLBeam(ofile, name, description, topo, beamtype, target, ra, dec, subbands, flyseye, tabrings, tabringsize, - tablist, dataproducts, status): + tablist, dataproducts, status, equinox="J2000"): print(r"""<item index="0"> <lofar:measurement xsi:type="lofar:BFMeasurementType"> <name>%s</name> @@ -410,7 +410,7 @@ def writeXMLBeam(ofile, name, description, topo, beamtype, target, ra, dec, subb <targetName>%s</targetName> <ra>%s</ra> <dec>%s</dec> - <equinox>J2000</equinox> + <equinox>%s</equinox> <duration>0</duration> <subbandsSpecification> <subbands>%s</subbands> @@ -430,8 +430,8 @@ def writeXMLBeam(ofile, name, description, topo, beamtype, target, ra, dec, subb </resultDataProducts> </lofar:measurement> </item>""" % ( - name, description, topo, status, beamtype, target, ra, dec, subbands, writeBoolean(flyseye), - tabrings, tabringsize, tablist, dataproducts), file=ofile) + name, description, topo, status, beamtype, target, ra, dec, equinox, subbands, + writeBoolean(flyseye), tabrings, tabringsize, tablist, dataproducts), file=ofile) def writeXMLObsEnd(ofile): @@ -1660,7 +1660,9 @@ def readBlock(lines, projectName, blockNr): "globalTABrings": [], "coherentStokesData": False, "flysEye": False, - "numberOfBitsPerSample": 0} + "numberOfBitsPerSample": 0, + "equinox": "J2000" + } for lineNr, cline in enumerate(lines): if "=" in cline and not cline.startswith(('BBS', 'Demix', 'Pulsar')): # we skip beam and pipelines lines @@ -1825,6 +1827,8 @@ def readBlock(lines, projectName, blockNr): raise GenException("the number of nodes parameter is not valid for BLOCK: %i" % blockNr) elif key == "storagemanager": s["storagemanager"] = value + elif key == "equinox": + s["equinox"] = value else: raise GenException("unknown key:'%s' in BLOCK: %i" % (key, blockNr)) return s ##settings @@ -2107,6 +2111,13 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ # raise GenException('Prefactor mode currently does not support an internal calibration beam.') else: tar_pipe_input_INST_topo = cal_pipe_calibrator_topology + '.inst.dps' # 1.CPC.inst.dps + elif processing == 'PreprocessingNoFlagging': + tar_pipe_predecessor = tar_obs_topology # 1.T + tar_pipe_input_INST_topo = '' # no input instrument models for these modes + cal_obs_pipe_default_template = "Preprocessing Pipeline" + cal_tar_pipe_default_template = "Preprocessing Pipeline" + cal_pipe_calibrator_description = "Preprocessing" + cal_pipe_target_description = "Preprocessing" bfDataExtension = determineBfDataExtension(coherentStokesData, incoherentStokesData) @@ -2215,7 +2226,8 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ coherentStokesData, incoherentStokesData, settings['cluster']), - status) + status, + settings['equinox']) writeXMLObsEnd(ofile) # target start and end time: @@ -2261,7 +2273,7 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ nr_cores_per_task, miscParameters) - elif processing == 'Preprocessing': + elif processing in ['Preprocessing', 'PreprocessingNoFlagging']: calibratorDemix = settings['calibratorDemix'] for i in range(0, len(calibratorDemix)): if len(calibratorDemix) > 1: # TODO a cludge right now, but want to refactor how to call the writeXML soon @@ -2429,7 +2441,8 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ coherentStokesData, incoherentStokesData, settings['cluster']), - status) + status, + settings['equinox']) # create the extra polarization beam? if "create_extra_ncp_beam" in settings and settings["create_extra_ncp_beam"]: @@ -2450,7 +2463,8 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ coherentStokesData, incoherentStokesData, settings['cluster']), - status) # FIXME missing parameters + status, + settings['equinox']) # FIXME missing parameters # create a calibrator beam in the target observation? if settings['create_target_cal_beam']: @@ -2478,7 +2492,8 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ coherentStokesData, incoherentStokesData, settings['cluster']), - status) + status, + settings['equinox']) writeXMLObsEnd(ofile) @@ -2515,7 +2530,7 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ nr_cores_per_task, miscParameters) - elif processing == 'Preprocessing': + elif processing in ['Preprocessing', 'PreprocessingNoFlagging']: calibratorDemix = settings['calibratorDemix'] for i in range(0, len(calibratorDemix)): if len(calibratorDemix) > 1: # TODO a cludge right now, but want to refactor how to call the writeXML soon @@ -2678,7 +2693,8 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ coherentStokesData, incoherentStokesData, settings['cluster']), - status) + status, + settings['equinox']) writeXMLObsEnd(ofile) @@ -2711,6 +2727,9 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ elif processing == 'Prefactor': tar_pipe_default_template = "Calibration Pipeline Target" tar_pipe_description = "Prefactor Target" + elif processing == 'PreprocessingNoFlagging': + tar_pipe_default_template = "PreprocessingNoFlagging Pipeline" + tar_pipe_description = "Preprocessing No Flagging" if settings['writePackageTag']: tar_pipe_name = settings['packageTag'] + "/" + targetBeams[beamNr][2] + "/" + str(repeatNr) + "." + \ @@ -2742,7 +2761,7 @@ def writeRepeat(ofile, projectName, blockTopo, repeatNr, settings, imaging_pipe_ nr_cores_per_task, miscParameters) - elif processing == 'Preprocessing': + elif processing in ['Preprocessing', 'PreprocessingNoFlagging']: targetDemix = settings['targetDemix'] for i in range(0, len(targetDemix[beamNr])): if len(targetDemix[