def KAT2AIPS (katdata, outUV, disk, fitsdisk, err, \ calInt=1.0, **kwargs): """Convert KAT-7 HDF 5 data set to an Obit UV. This module requires katdal and katpoint and their dependencies contact Ludwig Schwardt <*****@*****.**> for details. Parameters ---------- katdata : string input katfile object outUV : ?? Obit UV object, should be a KAT template for the appropriate number of IFs and poln. disk : int AIPS Disk number fitsdisk: int FITS Disk number err : ?? Obit error/message stack calInt : Calibration interval in min. targets : list, optinal List of targetnames to extract from the file """ ################################################################ OErr.PLog(err, OErr.Info, "Converting h5 data to AIPS UV format.") OErr.printErr(err) print "Converting h5 data to AIPS UV format.\n" # Extract metadata meta = GetKATMeta(katdata, err) # Extract AIPS parameters of the uv data to the metadata meta["Aproject"] = outUV.Aname meta["Aclass"] = outUV.Aclass meta["Aseq"] = outUV.Aseq meta["Adisk"] = disk meta["calInt"] = calInt meta["fitsdisk"] = fitsdisk # Update descriptor UpdateDescriptor(outUV, meta, err) # Write AN table WriteANTable(outUV, meta, err) # Write FQ table WriteFQTable(outUV, meta, err) # Write SU table WriteSUTable(outUV, meta, err) # Convert data ConvertKATData(outUV, katdata, meta, err) # Index data OErr.PLog(err, OErr.Info, "Indexing data") OErr.printErr(err) UV.PUtilIndex(outUV, err) # Open/close UV to update header outUV.Open(UV.READONLY, err) outUV.Close(err) if err.isErr: OErr.printErrMsg(err, message="Update UV header failed") # initial CL table OErr.PLog(err, OErr.Info, "Create Initial CL table") OErr.printErr(err) print "Create Initial CL table\n" UV.PTableCLGetDummy(outUV, outUV, 1, err, solInt=calInt) outUV.Open(UV.READONLY, err) outUV.Close(err) if err.isErr: OErr.printErrMsg(err, message="Update UV header failed") # History outHistory = History.History("outhistory", outUV.List, err) outHistory.Open(History.READWRITE, err) outHistory.TimeStamp("Convert KAT7 HDF 5 data to Obit", err) outHistory.WriteRec(-1, "datafile = " + katdata.name, err) outHistory.WriteRec(-1, "calInt = " + str(calInt), err) outHistory.Close(err) outUV.Open(UV.READONLY, err) outUV.Close(err) if err.isErr: OErr.printErrMsg(err, message="Update UV header failed") # Return the metadata for the pipeline return meta
def KAT2AIPS (katdata, outUV, disk, fitsdisk, err, \ calInt=1.0, static=None, **kwargs): """Convert MeerKAT MVF data set to an Obit UV. This module requires katdat and katpoint and their dependencies contact Ludwig Schwardt <*****@*****.**> for details. Parameters ---------- katdata : string input katdal object outUV : ?? Obit UV object, shoud be a KAT template for the appropriate number of IFs and poln. disk : int AIPS Disk number fitsdisk: int FITS Disk number err : ?? Obit error/message stack calInt : Calibration interval in min. targets : list, optinal List of targetnames to extract from the file stop_w : bool Fring stop data? (Values only for KAT-7) """ ################################################################ OErr.PLog(err, OErr.Info, "Converting MVF data to AIPS UV format.") OErr.printErr(err) print("Converting MVF data to AIPS UV format.\n") # Extract metadata meta = GetKATMeta(katdata, err) # TODO: Fix this all up so that the below isn't the case! if meta["products"].size != meta["nants"] * meta["nants"] * 4: raise ValueError( "Only full stokes and all correlation products are supported.") # Extract AIPS parameters of the uv data to the metadata meta["Aproject"] = outUV.Aname meta["Aclass"] = outUV.Aclass meta["Aseq"] = outUV.Aseq meta["Adisk"] = disk meta["calInt"] = calInt meta["fitsdisk"] = fitsdisk # Update descriptor UpdateDescriptor(outUV, meta, err) # Write AN table WriteANTable(outUV, meta, err) # Write FQ table WriteFQTable(outUV, meta, err) # Write SU table WriteSUTable(outUV, meta, err) # Convert data ConvertKATData(outUV, katdata, meta, err, static=static, blmask=kwargs.get('blmask', 1.e10), stop_w=kwargs.get('stop_w', False), timeav=kwargs.get('timeav', 1), flag=kwargs.get('flag', False), doweight=kwargs.get('doweight', True), doflags=kwargs.get('doflags', True)) # Index data OErr.PLog(err, OErr.Info, "Indexing data") OErr.printErr(err) UV.PUtilIndex(outUV, err) # Open/close UV to update header outUV.Open(UV.READONLY, err) outUV.Close(err) if err.isErr: OErr.printErrMsg(err, message="Update UV header failed") # initial CL table OErr.PLog(err, OErr.Info, "Create Initial CL table") OErr.printErr(err) print("Create Initial CL table\n") UV.PTableCLfromNX(outUV, meta["maxant"], err, calInt=calInt) outUV.Open(UV.READONLY, err) outUV.Close(err) if err.isErr: OErr.printErrMsg(err, message="Update UV header failed") # History outHistory = History.History("outhistory", outUV.List, err) outHistory.Open(History.READWRITE, err) outHistory.TimeStamp("Convert MeerKAT MVF data to Obit", err) for name in katdata.name.split(','): for line in _history_wrapper.wrap("datafile = " + name): outHistory.WriteRec(-1, line, err) outHistory.WriteRec(-1, "calInt = " + str(calInt), err) outHistory.Close(err) outUV.Open(UV.READONLY, err) outUV.Close(err) if err.isErr: OErr.printErrMsg(err, message="Update UV header failed") # Return the metadata for the pipeline return meta