Esempio n. 1
0
def makeFLAG_CMD(tablename,outputfilename):

    # modules
    import casacore.tables as tb

    # params

    # header
    header1 = 'APPLIED;COMMAND;INTERVAL;LEVEL;REASON;SEVERITY;TIME;TYPE'
    header2 = 'B;A;D;I;A;I;D;A'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    f.write('')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
             'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
            }
    returned_table.putcolkeywords('TIME',value)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),}
    returned_table.putcolkeywords('INTERVAL',value)
Esempio n. 2
0
def makeSTATE(tablename,outputfilename):

    # modules
    import casacore.tables as tb

    # params

    # header
    header1 = 'CAL;FLAG_ROW;LOAD;OBS_MODE;REF;SIG;SUB_SCAN'
    header2 = 'D;B;D;A;B;B;I'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    f.write('0;0;0;"OBSERVE_TARGET#OFF_SOURCE,POSITION_SWITCH";1;0;2'+'\n')
    f.write('0;0;0;"OBSERVE_TARGET#ON_SOURCE,POSITION_SWITCH";1;0;1'+'\n')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

    value = {'QuantumUnits': np.array(['K'],dtype='S2')}
    returned_table.putcolkeywords('CAL',value)

    value = {'QuantumUnits': np.array(['K'],dtype='S2')}
    returned_table.putcolkeywords('LOAD',value)
Esempio n. 3
0
def makeHISTORY(tablename,outputfilename):

    # modules
    import casacore.tables as tb

    # params

    # header
    header1 = 'APP_PARAMS;CLI_COMMAND;APPLICATION;MESSAGE;OBJECT_ID;OBSERVATION_ID;ORIGIN;PRIORITY;TIME'
    header2 = 'A1;A1;A;A;I;I;A;A;D'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    f.write('')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
             'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
            }
    returned_table.putcolkeywords('TIME',value)
Esempio n. 4
0
def makeLMT_ARRAY(tablename,outputfilename,nbeam=1,npol=2,nspw=2):

    # modules
    import casacore.tables as tb

    # params
    n_array = nbeam*npol*nspw

    # header
    header1 = 'ARRAY;BEAM;POLARIZATION;SPECTRAL_WINDOW'
    header2 = 'I;I;I;I'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    for i in range(n_array):
        ARRAY = str(i)
        BEAM = str((i // npol) % nbeam)
        POLARIZATION = str((i % npol) * 3 + 9)
        SPECTRAL_WINDOW = str((i // (npol*nbeam)) % nspw)

        f.write(ARRAY+';')
        f.write(BEAM+';')
        f.write(POLARIZATION+';')
        f.write(SPECTRAL_WINDOW+'\n')

    f.close()
    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)
Esempio n. 5
0
def makePROCESSOR(tablename,outputfilename):

    # modules
    import casacore.tables as tb

    # params

    # header
    header1 = 'FLAG_ROW;MODE_ID;TYPE;TYPE_ID;SUB_TYPE'
    header2 = 'B;I;A;I;A'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    f.write('0;-1;"";-1;""')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)
Esempio n. 6
0
def makeDOPPLER(tablename,outputfilename):

    # modules
    import casacore.tables as tb

    # params

    # header
    header1 = 'DOPPLER_ID;SOURCE_ID;TRANSITION_ID;VELDEF'
    header2 = 'I;I;I;D'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    f.write('')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

    value = {'QuantumUnits': np.array(['m/s'],dtype='|S4'),
             'MEASINFO': {'Ref': 'RADIO', 'type': 'doppler'},
            }
    returned_table.putcolkeywords('VELDEF',value)
Esempio n. 7
0
def makeDATA_DESCRIPTION(tablename,outputfilename,nspw=2):

    # modules
    import casacore.tables as tb

    # params

    # header
    header1 = 'FLAG_ROW;POLARIZATION_ID;SPECTRAL_WINDOW_ID'
    header2 = 'B;I;I'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    for i in range(nspw):
        FLAG_ROW = '0'
        POLARIZATION_ID = '0'
        SPECTRAL_WINDOW_ID = str(i)
        f.write(FLAG_ROW+';')
        f.write(POLARIZATION_ID+';')
        f.write(SPECTRAL_WINDOW_ID+'\n')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)
Esempio n. 8
0
def makeOBSERVATION(tablename,outputfilename,time,project,observer,telescope_name='NRO'):

    # modules
    import casacore.tables as tb

    # params
    time_start = time.min()
    time_end   = time.max()

    # header
    header1 = 'TIME_RANGE;LOG;SCHEDULE;FLAG_ROW;OBSERVER;PROJECT;RELEASE_DATE;SCHEDULE_TYPE;TELESCOPE_NAME'
    header2 = 'D2;A1;A1;B;A;A;D;A;A'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    TIME_RANGE = str(time_start)+';'+str(time_end)
    LOG = ''
    SCHEDULE = ''
    FLAG_ROW = '0'
    OBSERVER = '"'+observer+'"'
    PROJECT = '"'+project+'"'
    RELEASE_DATE = '0'
    SCHEDULE_TYPE = ''
    TELESCOPE_NAME = '"'+telescope_name+'"'

    f.write(TIME_RANGE+';')
    f.write(LOG+';')
    f.write(SCHEDULE+';')
    f.write(FLAG_ROW+';')
    f.write(OBSERVER+';')
    f.write(PROJECT+';')
    f.write(RELEASE_DATE+';')
    f.write(SCHEDULE_TYPE+';')
    f.write(TELESCOPE_NAME+'\n')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
             'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
            }
    returned_table.putcolkeywords('TIME_RANGE',value)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
             'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
            }
    returned_table.putcolkeywords('RELEASE_DATE',value)
Esempio n. 9
0
    def test_tableascii(self):
        """Testing ASCII table."""
        c1 = makescacoldesc("coli", 0)
        c2 = makescacoldesc("cold", 0.)
        c3 = makescacoldesc("cols", "")
        c4 = makescacoldesc("colb", True)
        c5 = makescacoldesc("colc", 0. + 0j)

        t = table("ttable.py_tmp.tab1", maketabdesc((c1, c2, c3, c4, c5)),
                  ack=False)
        tcol = t.colnames()
        t.addrows(5)
        t.toascii('asciitemp1', columnnames=tcol)
        tablefromascii(tablename='tablefromascii', asciifile='asciitemp1')
        ta = table("tablefromascii", readonly=False)
        tacol = ta.colnames()
        self.assertEqual(tcol, tacol)
        ta.close()
        t.close()
        tabledelete('tablefromascii')
        tabledelete("ttable.py_tmp.tab1")
Esempio n. 10
0
def makeWEATHER(tablename,outputfilename):

	# modules
	import casacore.tables as tb

	# params

	# header
	header1 = 'ANTENNA_ID;INTERVAL;TIME;TEMPERATURE;PRESSURE;REL_HUMIDITY;WIND_SPEED;WIND_DIRECTION'
	header2 = 'I;D;D;R;R;R;R;R'

	f = open(outputfilename+'.header','w')

	f.write(header1+'\n')
	f.write(header2+'\n')
	f.close()

	# table
	f = open(outputfilename+'.dat','w')

	f.write('')

	f.close()

	# make table
	returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
	         'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
	        }
	returned_table.putcolkeywords('TIME',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2'),}
	returned_table.putcolkeywords('INTERVAL',value)

	value = {'QuantumUnits': np.array(['K'],dtype='|S2'),}
	returned_table.putcolkeywords('TEMPERATURE',value)

	value = {'QuantumUnits': np.array(['hPa'],dtype='|S4'),}
	returned_table.putcolkeywords('PRESSURE',value)

	value = {'QuantumUnits': np.array(['%'],dtype='|S2'),}
	returned_table.putcolkeywords('REL_HUMIDITY',value)

	value = {'QuantumUnits': np.array(['m/s'],dtype='|S4'),}
	returned_table.putcolkeywords('WIND_SPEED',value)

	value = {'QuantumUnits': np.array(['rad'],dtype='|S4'),}
	returned_table.putcolkeywords('WIND_DIRECTION',value)

	returned_table.flush()
	returned_table.close()
Esempio n. 11
0
    def test_tableascii(self):
        """Testing ASCII table."""
        c1 = makescacoldesc("coli", 0)
        c2 = makescacoldesc("cold", 0.)
        c3 = makescacoldesc("cols", "")
        c4 = makescacoldesc("colb", True)
        c5 = makescacoldesc("colc", 0. + 0j)

        t = table("ttable.py_tmp.tab1",
                  maketabdesc((c1, c2, c3, c4, c5)),
                  ack=False)
        tcol = t.colnames()
        t.addrows(5)
        t.toascii('asciitemp1', columnnames=tcol)
        tablefromascii(tablename='tablefromascii', asciifile='asciitemp1')
        ta = table("tablefromascii", readonly=False)
        tacol = ta.colnames()
        self.assertEqual(tcol, tacol)
        ta.close()
        t.close()
        tabledelete('tablefromascii')
        tabledelete("ttable.py_tmp.tab1")
Esempio n. 12
0
def makeFREQ_OFFSET(tablename,outputfilename):

    # modules
    import casacore.tables as tb

    # params

    # header
    header1 = 'ANTENNA1;ANTENNA2;FEED_ID;INTERVAL;OFFSET;SPECTRAL_WINDOW_ID;TIME'
    header2 = 'I;I;I;D;D;I;D'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    f.write('')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
             'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
            }
    returned_table.putcolkeywords('TIME',value)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),}
    returned_table.putcolkeywords('INTERVAL',value)

    value = {'QuantumUnits': np.array(['Hz'],dtype='|S3'),
             'MEASINFO': {'type': 'frequency','Ref': 'TOPO'},
            }
    returned_table.putcolkeywords('OFFSET',value)
Esempio n. 13
0
def makePOLARIZAION(tablename,outputfilename,npol=2):

    # modules
    import casacore.tables as tb

    # params

    # header
    header1 = 'CORR_TYPE;CORR_PRODUCT;FLAG_ROW;NUM_CORR'
    header2 = 'I'+str(npol)+';I'+str(npol)+','+str(npol)+';B;I'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    CORR_TYPE = ''
    for i in range(npol):
        CORR_TYPE = CORR_TYPE + str(3*i+9) + ';'
    CORR_TYPE = CORR_TYPE[0:-1]
    CORR_PRODUCT = '0;'*(npol**2-1)+'0'
    FLAG_ROW = '0'
    NUM_CORR = str(npol)

    f.write(CORR_TYPE+';')
    f.write(CORR_PRODUCT+';')
    f.write(FLAG_ROW+';')
    f.write(NUM_CORR+'\n')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)
Esempio n. 14
0
def makePOINTING(tablename,outputfilename,direction,time,nbeam=1,texp=0.2):

	'''
	direction: (nscan*nbeam) array
	'''

	# modules
	import casacore.tables as tb

	# params
	direction_rad = direction/180.*np.pi
	n_direction = direction.shape[0]
	time_end   = time.max()

	# header
	header1 = 'DIRECTION;ANTENNA_ID;INTERVAL;NAME;NUM_POLY;TARGET;TIME;TIME_ORIGIN;TRACKING'
	header2 = 'D2,1;I;D;A;I;D2,1;D;D;B'

	f = open(outputfilename+'.header','w')

	f.write(header1+'\n')
	f.write(header2+'\n')
	f.close()

	# table
	f = open(outputfilename+'.dat','w')

	for i in range(n_direction):
		#DIRECTION = str(direction_rad[i][0])+';'+str(direction_rad[i][1])
		DIRECTION = ';'
		ANTENNA_ID = str((n_direction // (n_direction/nbeam))-1)
		INTERVAL = str(texp)
		NAME = ''
		NUM_POLY= '0'
		TARGET = ';'
		TIME = time[i].astype('|U')
		TIME_ORIGIN = '0'
		TRACKING = '0'

		f.write(DIRECTION+';')
		f.write(ANTENNA_ID+';')
		f.write(INTERVAL+';')
		f.write(NAME+';')
		f.write(NUM_POLY+';')
		f.write(TARGET+';')
		f.write(TIME+';')
		f.write(TIME_ORIGIN+';')
		f.write(TRACKING+'\n')

	f.close()

	# make table
	returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

	value  = np.zeros([n_direction,1,2],dtype='float64')

	value[:,0] = direction_rad.copy()

	returned_table.putcol('DIRECTION',value)

	value = {'QuantumUnits': np.array(['rad', 'rad'],dtype='|S4'),
	         'MEASINFO': {'type': 'direction','Ref': 'J2000'},
	        }
	returned_table.putcolkeywords('DIRECTION',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2'),}
	returned_table.putcolkeywords('INTERVAL',value)

	value = {'QuantumUnits': np.array(['rad', 'rad'],dtype='|S4'),
	         'MEASINFO': {'type': 'direction','Ref': 'J2000'},
	        }
	returned_table.putcolkeywords('TARGET',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
	         'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
	        }
	returned_table.putcolkeywords('TIME',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
	         'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
	        }
	returned_table.putcolkeywords('TIME_ORIGIN',value)

	returned_table.flush()
	returned_table.close()
Esempio n. 15
0
def makeSOURCE(tablename,outputfilename,ra,dec,sysvel,sourcename,time,freq):

    # modules
    import casacore.tables as tb

    # params
    ra_rad  = ra/180.*np.pi
    dec_rad = dec/180.*np.pi
    time_interval = time.max() - time.min()
    time_mean = np.mean(time)
    nspw = freq.shape[0]

    # header
    header1 = 'DIRECTION;PROPER_MOTION;CALIBRATION_GROUP;CODE;INTERVAL;NAME;NUM_LINES;SOURCE_ID;SPECTRAL_WINDOW_ID;TIME;TRANSITION;REST_FREQUENCY;SYSVEL'
    header2 = 'D2;D2;I;A;D;A;I;I;I;D;A1;D1;D1'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    for i in range(nspw):
        DIRECTION = str(ra_rad)+';'+str(dec_rad)
        PROPER_MOTION = '0;0'
        CALIBRATION_GROUP ='-1'
        CODE = '""'
        INTERVAL = str(time_interval)
        NAME = '"'+sourcename+'"'
        NUM_LINES = '1'
        SOURCE_ID = '0'
        SPECTRAL_WINDOW_ID = str(i)
        TIME = str(time_mean)
        TRANSITION = ''
        REST_FREQUENCY = str(np.mean(freq[i]))
        SYSVEL = str(sysvel)

        f.write(DIRECTION+';')
        f.write(PROPER_MOTION+';')
        f.write(CALIBRATION_GROUP+';')
        f.write(CODE+';')
        f.write(INTERVAL+';')
        f.write(NAME+';')
        f.write(NUM_LINES+';')
        f.write(SOURCE_ID+';')
        f.write(SPECTRAL_WINDOW_ID+';')
        f.write(TIME+';')
        f.write(TRANSITION+';')
        f.write(REST_FREQUENCY+';')
        f.write(SYSVEL+'\n')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

    value = {'QuantumUnits': np.array(['rad', 'rad'],dtype='|S4'),
             'MEASINFO': {'type': 'direction','Ref': 'J2000'},
            }
    returned_table.putcolkeywords('DIRECTION',value)

    value = {'QuantumUnits': np.array(['rad/s'],dtype='|S6')}
    returned_table.putcolkeywords('PROPER_MOTION',value)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2')}
    returned_table.putcolkeywords('INTERVAL',value)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
             'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
            }
    returned_table.putcolkeywords('TIME',value)


    value = {'QuantumUnits': np.array(['Hz'],dtype='|S3'),
             'MEASINFO': {'type': 'frequency','Ref': 'TOPO'},
            }
    returned_table.putcolkeywords('REST_FREQUENCY',value)

    value = {'QuantumUnits': np.array(['m/s'],dtype='|S4'),
             'MEASINFO': {'Ref': 'LSRK', 'type': 'radialvelocity'},
            }
    returned_table.putcolkeywords('SYSVEL',value)
Esempio n. 16
0
def makeSPECTRAL_WINDOW(tablename,outputfilename,freq,nspw=2):

	# modules
	import casacore.tables as tb

	# params
	nchan = freq.shape[1]
	tBW = abs(freq[0].max() - freq[0].min())

	# header
	header1 = 'MEAS_FREQ_REF;REF_FREQUENCY;FLAG_ROW;FREQ_GROUP;FREQ_GROUP_NAME;IF_CONV_CHAIN;NAME;NET_SIDEBAND;NUM_CHAN;TOTAL_BANDWIDTH;CHAN_FREQ;CHAN_WIDTH;EFFECTIVE_BW;RESOLUTION'
	header2 = 'I;D;B;I;A;I;A;I;I;D;D'+str(nchan)+';D'+str(nchan)+';D'+str(nchan)+';D'+str(nchan)

	f = open(outputfilename+'.header','w')

	f.write(header1+'\n')
	f.write(header2+'\n')
	f.close()

	# table
	f = open(outputfilename+'.dat','w')

	for i in range(nspw):
		MEAS_FREQ_REF = '5' #TOPO
		#CHAN_FREQ = ';'.join(map(str,freq[i]))
		#CHAN_FREQ = ''
		REF_FREQUENCY = str(freq[i][0])
		#CHAN_WIDTH = (str(np.diff(freq[i])[0])+';')*(nchan-1)+str(np.diff(freq[i])[0])
		#CHAN_WIDTH = ''
		#EFFECTIVE_BW = (str(np.abs(np.diff(freq[i]))[0])+';')*(nchan-1)+str(np.abs(np.diff(freq[i]))[0])
		#EFFECTIVE_BW = ''
		#RESOLUTION = (str(np.abs(np.diff(freq[i]))[0])+';')*(nchan-1)+str(np.abs(np.diff(freq[i]))[0])
		#RESOLUTION = ''
		FLAG_ROW = '0'
		FREQ_GROUP = '0'
		FREQ_GROUP_NAME = ''
		IF_CONV_CHAIN = '0'
		NAME = ''
		NET_SIDEBAND = str(i)
		NUM_CHAN = str(nchan)
		TOTAL_BANDWIDTH = str(tBW)

		f.write(MEAS_FREQ_REF+';')
		#f.write(CHAN_FREQ+';')
		f.write(REF_FREQUENCY+';')
		#f.write(CHAN_WIDTH+';')
		#f.write(EFFECTIVE_BW+';')
		#f.write(RESOLUTION+';')
		f.write(FLAG_ROW+';')
		f.write(FREQ_GROUP+';')
		f.write(FREQ_GROUP_NAME+';')
		f.write(IF_CONV_CHAIN+';')
		f.write(NAME+';')
		f.write(NET_SIDEBAND+';')
		f.write(NUM_CHAN+';')
		f.write(TOTAL_BANDWIDTH+';\n')

	f.close()

	# make table
	returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

	value = freq.copy()
	returned_table.putcol('CHAN_FREQ',value)

	value = np.zeros_like(freq)
	for i in range(2):
		value[i] = np.full(nchan,np.diff(freq[i])[0])

	returned_table.putcol('CHAN_WIDTH',value)

	value = np.zeros_like(freq)
	for i in range(2):
		value[i] = np.full(nchan,abs(np.diff(freq[i])[0]))

	returned_table.putcol('EFFECTIVE_BW',value)
	returned_table.putcol('RESOLUTION',value)

	value = {'MEASINFO': {'TabRefCodes': np.array([ 0,  1,  2,  3,  4,  5,  6,  7,  8, 64], dtype='uint32'),
	                      'TabRefTypes': np.array(['REST', 'LSRK', 'LSRD', 'BARY', 'GEO', 'TOPO', 'GALACTO', 'LGROUP','CMB', 'Undefined'],dtype='|S10'),
	                      'VarRefCol': 'MEAS_FREQ_REF',
	                      'type': 'frequency'},
	         'QuantumUnits': np.array(['Hz'],dtype='|S3')}
	returned_table.putcolkeywords('CHAN_FREQ',value)

	value = {'MEASINFO': {'TabRefCodes': np.array([ 0,  1,  2,  3,  4,  5,  6,  7,  8, 64], dtype='uint32'),
	                      'TabRefTypes': np.array(['REST', 'LSRK', 'LSRD', 'BARY', 'GEO', 'TOPO', 'GALACTO', 'LGROUP','CMB', 'Undefined'],dtype='|S10'),
	                      'VarRefCol': 'MEAS_FREQ_REF',
	                      'type': 'frequency'},
	         'QuantumUnits': np.array(['Hz'],dtype='|S3')}
	returned_table.putcolkeywords('REF_FREQUENCY',value)

	value = {'QuantumUnits': np.array(['Hz'],dtype='S3')}
	returned_table.putcolkeywords('CHAN_WIDTH',value)

	value = {'QuantumUnits': np.array(['Hz'],dtype='S3')}
	returned_table.putcolkeywords('EFFECTIVE_BW',value)

	value = {'QuantumUnits': np.array(['Hz'],dtype='S3')}
	returned_table.putcolkeywords('RESOLUTION',value)

	value = {'QuantumUnits': np.array(['Hz'],dtype='S3')}
	returned_table.putcolkeywords('TOTAL_BANDWIDTH',value)

	returned_table.flush()
	returned_table.close()
Esempio n. 17
0
def makeSYSCAL(tablename,outputfilename,Tsys,Tsys_time,time,nbeam=1,npol=2,nspw=2):

	'''
	Tsys: (nspw,npol,nchan) array
	'''

	# modules
	import casacore.tables as tb

	# params
	nspw = Tsys.shape[0]
	npol = Tsys.shape[1]
	nchan = Tsys.shape[2]
	n_array = nbeam*nspw
	time_interval = time.max() - Tsys_time

	# header
	header1 = 'ANTENNA_ID;FEED_ID;INTERVAL;SPECTRAL_WINDOW_ID;TIME;TSYS' #;TSYS_SPECTRUM'
	header2 = 'I;I;D;I;D;R'+str(npol) #+';R'+str(npol)+','+str(nchan)

	f = open(outputfilename+'.header','w')

	f.write(header1+'\n')
	f.write(header2+'\n')
	f.close()

	# table
	f = open(outputfilename+'.dat','w')

	for i in range(n_array):
		ANTENNA_ID = str(i % nbeam)
		FEED_ID = '0'
		INTERVAL = str(time_interval)
		SPECTRAL_WINDOW_ID = str(i // nbeam)
		TIME = str(Tsys_time)
		#TSYS_SPECTRUM = ';'.join(map(str,Tsys[i // nbeam].T.reshape(npol*nchan)))
		TSYS_SPECTRUM = ''
		TSYS = ';'.join(map(str,np.median(Tsys[(i // nbeam)],axis=(1,))))

		f.write(ANTENNA_ID+';')
		f.write(FEED_ID+';')
		f.write(INTERVAL+';')
		f.write(SPECTRAL_WINDOW_ID+';')
		f.write(TIME+';')
		f.write(TSYS+'\n')
		#f.write(TSYS_SPECTRUM+';\n')

	f.close()

	# make table
	returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

	#value = Tsys.copy().transpose(0,2,1)
	#returned_table.putcol('TSYS_SPECTRUM',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
	         'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
	        }
	returned_table.putcolkeywords('TIME',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2'),}
	returned_table.putcolkeywords('INTERVAL',value)

	#value = {'QuantumUnits': np.array(['K'],dtype='S2')}
	#returned_table.putcolkeywords('TSYS_SPECTRUM',value)

	value = {'QuantumUnits': np.array(['K'],dtype='S2')}
	returned_table.putcolkeywords('TSYS',value)
Esempio n. 18
0
def makeFIELD(tablename,outputfilename,ra,dec,fieldname,time):

    #modules
    import casacore.tables as tb

    # params
    ra_rad  = ra/180.*np.pi
    dec_rad = dec/180.*np.pi
    time_mean = np.mean(time)

    # header
    header1 = 'DELAY_DIR;PHASE_DIR;REFERENCE_DIR;CODE;FLAG_ROW;NAME;NUM_POLY;SOURCE_ID;TIME'
    header2 = 'D2,1;D2,1;D2,1;A;B;A;I;I;D'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    DELAY_DIR = str(ra_rad)+';'+str(dec_rad)
    PHASE_DIR = str(ra_rad)+';'+str(dec_rad)
    REFERENCE_DIR = str(ra_rad)+';'+str(dec_rad)
    CODE = '""'
    FLAG_ROW = '0'
    NAME = '"'+fieldname+'"'
    NUM_POLY = '0'
    SOURCE_ID = '0'
    TIME = str(time_mean)

    f.write(DELAY_DIR+';')
    f.write(PHASE_DIR+';')
    f.write(REFERENCE_DIR+';')
    f.write(CODE+';')
    f.write(FLAG_ROW+';')
    f.write(NAME+';')
    f.write(NUM_POLY+';')
    f.write(SOURCE_ID+';')
    f.write(TIME+'\n')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

    value = {'QuantumUnits': np.array(['rad', 'rad'],dtype='|S4'),
             'MEASINFO': {'type': 'direction','Ref': 'J2000'},
            }
    returned_table.putcolkeywords('DELAY_DIR',value)

    value = {'QuantumUnits': np.array(['rad', 'rad'],dtype='|S4'),
             'MEASINFO': {'type': 'direction','Ref': 'J2000'},
            }
    returned_table.putcolkeywords('PHASE_DIR',value)

    value = {'QuantumUnits': np.array(['rad', 'rad'],dtype='|S4'),
             'MEASINFO': {'type': 'direction','Ref': 'J2000'},
            }
    returned_table.putcolkeywords('REFERENCE_DIR',value)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
             'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
            }
    returned_table.putcolkeywords('TIME',value)
Esempio n. 19
0
def makeFEED(tablename,outputfilename,nspw=2):

    #modules
    import casacore.tables as tb

    # params

    # header
    header1 = 'POSITION;BEAM_OFFSET;POLARIZATION_TYPE;POL_RESPONSE;RECEPTOR_ANGLE;ANTENNA_ID;BEAM_ID;FEED_ID;INTERVAL;NUM_RECEPTORS;SPECTRAL_WINDOW_ID;TIME'
    header2 = 'D3;D2,2;A2;X2,2;D2;I;I;I;D;I;I;D'

    f = open(outputfilename+'.header','w')

    f.write(header1+'\n')
    f.write(header2+'\n')
    f.close()

    # table
    f = open(outputfilename+'.dat','w')

    for i in range(nspw):
        POSITION = '0;0;0'
        BEAM_OFFSET = '0;0;0;0'
        POLARIZATION_TYPE = '"X";"Y"'
        POL_RESPONSE = '0;0;0;0;0;0;0;0'
        RECEPTOR_ANGLE = '0;0'
        ANTENNA_ID = '0'
        BEAM_ID = '0'
        FEED_ID = '0'
        INTERVAL = '0'
        NUM_RECEPTORS = '0'
        SPECTRAL_WINDOW_ID = str(i)
        TIME = '0'

        f.write(POSITION+';')
        f.write(BEAM_OFFSET+';')
        f.write(POLARIZATION_TYPE+';')
        f.write(POL_RESPONSE+';')
        f.write(RECEPTOR_ANGLE+';')
        f.write(ANTENNA_ID+';')
        f.write(BEAM_ID+';')
        f.write(FEED_ID+';')
        f.write(INTERVAL+';')
        f.write(NUM_RECEPTORS+';')
        f.write(SPECTRAL_WINDOW_ID+';')
        f.write(TIME+'\n')

    f.close()

    # make table
    returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

    value = {'QuantumUnits': np.array(['m', 'm', 'm'],dtype='|S2'),
             'MEASINFO': {'type': 'position','Ref': 'ITRF'},
            }
    returned_table.putcolkeywords('POSITION',value)

    value = {'QuantumUnits': np.array(['rad', 'rad'],dtype='|S4'),
             'MEASINFO': {'type': 'direction','Ref': 'J2000'},
            }
    returned_table.putcolkeywords('BEAM_OFFSET',value)

    value = {'QuantumUnits': np.array(['rad'],dtype='|S4'),}
    returned_table.putcolkeywords('RECEPTOR_ANGLE',value)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),}
    returned_table.putcolkeywords('INTERVAL',value)

    value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
             'MEASINFO': {'type': 'epoch','Ref': 'UTC'},
            }
    returned_table.putcolkeywords('TIME',value)
Esempio n. 20
0
def makeANTENNA(tablename,
                outputfilename,
                dish_diameter = 50.,
                nbeam = 1,
                beamname = 'LMT-b4r-beam',
                lon = -97. + 18./60. + 53./3600.,
                lat = 18. + 59./60. + 6./3600.,
                height = 4600.,
                type = 'GROUND-BASED',
                mounit='ALT-AZ'):

	# modules
	from astropy import coordinates
	import casacore.tables as tb

	# params
	c = coordinates.EarthLocation.from_geodetic(lon=lon,lat=lat,height=height)
	x = c.value[0]
	y = c.value[1]
	z = c.value[2]
	beamname_list = []
	for i in range(nbeam):
		beamname_list.append(beamname+str(i))

	# header
	header1 = 'OFFSET;POSITION;TYPE;DISH_DIAMETER;FLAG_ROW;MOUNT;NAME;STATION'
	header2 = 'D3;D3;A;D;B;A;A;A'

	f = open(outputfilename+'.header','w')

	f.write(header1+'\n')
	f.write(header2+'\n')
	f.close()

	# table
	f = open(outputfilename+'.dat','w')

	for i in range(nbeam):
	    OFFSET = '0;0;0'
	    POSITION = str(x)+';'+str(y)+';'+str(z)
	    TYPE = '"'+type+'"'
	    DISH_DIAMETER = str(dish_diameter)
	    FLAG_ROW = '0'
	    MOUNT = '"'+mounit+'"'
	    NAME = '"'+';'.join(beamname_list)+'"'
	    STATION = '""'

	    f.write(OFFSET+';')
	    f.write(POSITION+';')
	    f.write(TYPE+';')
	    f.write(DISH_DIAMETER+';')
	    f.write(FLAG_ROW+';')
	    f.write(MOUNT+';')
	    f.write(NAME+';')
	    f.write(STATION+'\n')

	f.close()

	# make table
	returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

	value = {'QuantumUnits': np.array(['m', 'm', 'm'],dtype='|S2'),
	         'MEASINFO': {'type': 'position','Ref': 'ITRF'},
	        }
	returned_table.putcolkeywords('OFFSET',value)

	value = {'QuantumUnits': np.array(['m', 'm', 'm'],dtype='|S2'),
	         'MEASINFO': {'type': 'position','Ref': 'ITRF'},
	        }
	returned_table.putcolkeywords('POSITION',value)

	value = {'QuantumUnits': np.array(['m'],dtype='|S2')}
	returned_table.putcolkeywords('DISH_DIAMETER',value)
Esempio n. 21
0
def makeMAIN(tablename,outputfilename,specdata,time,state_id,texp=0.2,tBW=2.5e9):

	'''
	specdata:    (nrow,nspw,npol,nchan) array
	time:        (nrow,)
	'''

	# modules
	import casacore.tables as tb

    # params
	nrow  = specdata.shape[0]
	nspw  = specdata.shape[1]
	npol = specdata.shape[2]
	nchan  = specdata.shape[3]

	weight = tBW/float(nchan) * texp
	sigma = (tBW/float(nchan) * texp)**-0.5

	ind_spw = (np.linspace(0,2*nrow-1,2*nrow,dtype='int32') % 2)

    #header
	f = open(outputfilename+'.header','w')

	header1 = 'UVW;WEIGHT;SIGMA;ANTENNA1;ANTENNA2;ARRAY_ID;DATA_DESC_ID;EXPOSURE;FEED1;FEED2;FIELD_ID;FLAG_ROW;INTERVAL;OBSERVATION_ID;PROCESSOR_ID;SCAN_NUMBER;STATE_ID;TIME;TIME_CENTROID;FLAG_CATEGORY;FLAG;FLOAT_DATA'
	header2 = 'D3;R2;R2;I;I;I;I;D;I;I;I;B;D;I;I;I;I;D;D;B3;B2,'+str(nchan)+';R2,'+str(nchan)

	f.write(header1+'\n')
	f.write(header2+'\n')
	f.close()

	f = open(outputfilename+'.dat','w')

    # table
	for i in range(nrow):
		for i_spw in range(nspw):
			UVW = '0;0;0'
			WEIGHT = str(weight)+';'+str(weight)
			SIGMA = str(sigma)+';'+str(sigma)
			ANTENNA1 = '0'
			ANTENNA2 = '0'
			ARRAY_ID = '0'
			DATA_DESC_ID = str(i_spw)
			EXPOSURE = str(texp)
			FEED1 = '0'
			FEED2 = '0'
			FIELD_ID = '0'
			FLAG_ROW = '0'
			INTERVAL = str(texp)
			OBSERVATION_ID = '0'
			PROCESSOR_ID = '0'
			SCAN_NUMBER = str(i)
			STATE_ID = str(state_id[i])
			TIME = str(time[i])
			TIME_CENTROID = str(time[i])
			FLAG_CATEGORY = ''
			FLAG = ''
			FLOAT_DATA = ''

			f.write(UVW+';')
			f.write(WEIGHT+';')
			f.write(SIGMA+';')
			f.write(ANTENNA1+';')
			f.write(ANTENNA2+';')
			f.write(ARRAY_ID+';')
			f.write(DATA_DESC_ID+';')
			f.write(EXPOSURE+';')
			f.write(FEED1+';')
			f.write(FEED2+';')
			f.write(FIELD_ID+';')
			f.write(FLAG_ROW+';')
			f.write(INTERVAL+';')
			f.write(OBSERVATION_ID+';')
			f.write(PROCESSOR_ID+';')
			f.write(SCAN_NUMBER+';')
			f.write(STATE_ID+';')
			f.write(TIME+';')
			f.write(TIME_CENTROID+';')
			f.write(FLAG_CATEGORY)
			f.write(FLAG)
			f.write(FLOAT_DATA+'\n')

	f.close()

    # make table
	returned_table = tb.tablefromascii(tablename,outputfilename+'.dat',headerfile=outputfilename+'.header',sep=';',readonly=False)

	value = np.zeros_like(np.concatenate([specdata[:,0],specdata[:,1]],axis=0),dtype='bool').transpose(0,2,1)
	returned_table.putcol('FLAG',value)

	value  = np.zeros_like(np.concatenate([specdata[:,0],specdata[:,1]],axis=0),dtype='float64')

	for i in range(2):
		value[ind_spw==i] = specdata[:,i].copy()

	value = value.transpose(0,2,1)
	returned_table.putcol('FLOAT_DATA',value)

	#value = np.zeros([2*nrow,3],dtype='bool')
	#returned_table.putcol('FLAG_CATEGORY',value)

	value = {'QuantumUnits': np.array(['m', 'm', 'm'],dtype='|S2'),
	         'MEASINFO': {'type': 'uvw', 'Ref': 'ITRF'},
	        }
	returned_table.putcolkeywords('UVW',value)

	value = {'CATEGORY': np.array([],dtype='|S1')}
	returned_table.putcolkeywords('FLAG_CATEGORY',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2')}
	returned_table.putcolkeywords('EXPOSURE',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2')}
	returned_table.putcolkeywords('INTERVAL',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
	         'MEASINFO': {'type': 'epoch', 'Ref': 'UTC'}
	        }
	returned_table.putcolkeywords('TIME',value)

	value = {'QuantumUnits': np.array(['s'],dtype='|S2'),
	         'MEASINFO': {'type': 'epoch', 'Ref': 'UTC'},
	        }
	returned_table.putcolkeywords('TIME_CENTROID',value)

	value = {'UNIT': 'K'}
	returned_table.putcolkeywords('FLOAT_DATA',value)

	returned_table.flush()
	returned_table.close()