コード例 #1
0
ファイル: lofasmfile.py プロジェクト: ldartez/lofasm
def freq_average_file(filename, freqs, pol, bw=1.):
    '''
    take a list of frequency bands of width bw centered at freq from 
    each filterbank sample calculate the average over time.
    the minimum value of this averaged time series will be returned.

    Parameters
    ----------
    filename : str
        the data file to process
    freqs : int or list
        list of the selected center frequencies in MHz
    pol : str
        polarization to process
    bw : float, optional
        the bandwidth to include in the frequency averaging

    Returns
    -------
    freq_avg : numpy.array
                       array of frequency averaged time series minimum values,
                       each corresponding to its respective center
                       frequency at input
    '''
    _, filedata = _load_data(filename, pol)
    freq_avg_list = []
    if isinstance(freqs, list):
        freqs.sort()
        for i in range(len(freqs)):
            lfbin = freq2bin(freqs[i] - bw / 2.)
            hfbin = freq2bin(freqs[i] + bw / 2.)
            num_fbins = hfbin - lfbin
            num_tbins = np.shape(filedata)[1]        
            avg_ts = np.average(filedata[lfbin:hfbin,:], axis=0)
            freq_avg_list.append(deepcopy(avg_ts))
        rows = len(freq_avg_list)
        cols = max([len(x) for x in freq_avg_list])
        data = np.zeros((rows,cols), dtype=np.float64)
        for i in range(rows):
            data[i,:] = freq_avg_list[i]
    else:
        lfbin = freq2bin(freqs - bw / 2.)
        hfbin = freq2bin(freqs + bw / 2.)
        num_fbins = hfbin - lfbin
        avg_ts = np.average(filedata[lfbin:hfbin,:], axis=0)
        data = avg_ts
        

    return data
コード例 #2
0
ファイル: lofasmfile.py プロジェクト: shiningsurya/LoFASM
def freq_average_file(filename, freqs, pol, bw=1.):
    '''
    take a list of frequency bands of width bw centered at freq from 
    each filterbank sample calculate the average over time.
    the minimum value of this averaged time series will be returned.

    Parameters
    ----------
    filename : str
        the data file to process
    freqs : int or list
        list of the selected center frequencies in MHz
    pol : str
        polarization to process
    bw : float, optional
        the bandwidth to include in the frequency averaging

    Returns
    -------
    freq_avg : numpy.array
                       array of frequency averaged time series minimum values,
                       each corresponding to its respective center
                       frequency at input
    '''
    _, filedata = _load_data(filename, pol)
    freq_avg_list = []
    if isinstance(freqs, list):
        freqs.sort()
        for i in range(len(freqs)):
            lfbin = freq2bin(freqs[i] - bw / 2.)
            hfbin = freq2bin(freqs[i] + bw / 2.)
            num_fbins = hfbin - lfbin
            num_tbins = np.shape(filedata)[1]
            avg_ts = np.average(filedata[lfbin:hfbin, :], axis=0)
            freq_avg_list.append(deepcopy(avg_ts))
        rows = len(freq_avg_list)
        cols = max([len(x) for x in freq_avg_list])
        data = np.zeros((rows, cols), dtype=np.float64)
        for i in range(rows):
            data[i, :] = freq_avg_list[i]
    else:
        lfbin = freq2bin(freqs - bw / 2.)
        hfbin = freq2bin(freqs + bw / 2.)
        num_fbins = hfbin - lfbin
        avg_ts = np.average(filedata[lfbin:hfbin, :], axis=0)
        data = avg_ts

    return data
コード例 #3
0
ファイル: lofasmcal.py プロジェクト: ldartez/lofasm_galaxy
    def chfreq(self, new_freq):
        """Change to a new calibration frequency.

		Parameters
		----------
		new_freq : int or float
			The new frequency to work with in megahertz.
		"""
        self.freq = new_freq
        self.freqbin = pd.freq2bin(new_freq)
コード例 #4
0
ファイル: lofasmcal.py プロジェクト: ldartez/lofasm
    def chfreq(self, new_freq):
        """Change to a new calibration frequency.

        Parameters
        ----------
        new_freq : int or float
            The new frequency to work with in megahertz.
        """
        self.freq = new_freq
        self.freqbin = pd.freq2bin(new_freq)
コード例 #5
0
ファイル: LoFASM_GUI.py プロジェクト: pauvarela3/LoFASM
    def get(self):
        '''
        retrieve values
        '''
        if self.correlation_variable.get():
            results.current_correlation = self.correlation_variable.get()
            self.current_correlation_label.configure(
                text=results.current_correlation)

        if self.lfEntry.get():  # If the Entry field is not empty
            results.lower_freq = float(self.lfEntry.get())  # Get the new value
            self.l7.configure(text=str(results.lower_freq) +
                              ' MHz')  # update label
            #self.pow_spec_plot.set_xlim(int(results.lower_freq),int(results.upper_freq))
            #self.filter_bank_plot.set_ylim(int(int(results.lower_freq)*10.24),int(int(results.upper_freq)*10.24))
            self.pow_spec_plot.set_xlim(pdat.freq2bin(results.lower_freq),
                                        pdat.freq2bin(results.upper_freq))
            self.filter_bank_plot.set_ylim(pdat.freq2bin(results.lower_freq),
                                           pdat.freq2bin(results.upper_freq))

        if self.ufEntry.get():  # If the Entry field is not empty
            results.upper_freq = float(self.ufEntry.get())  # Get the new value
            self.l8.configure(text=str(results.upper_freq) +
                              ' MHz')  # update label
            #self.pow_spec_plot.set_xlim(int(results.lower_freq),int(results.upper_freq))
            #self.filter_bank_plot.set_ylim(int(int(results.lower_freq)*10.24),int(int(results.upper_freq)*10.24))
            self.pow_spec_plot.set_xlim(pdat.freq2bin(results.lower_freq),
                                        pdat.freq2bin(results.upper_freq))
            self.filter_bank_plot.set_ylim(pdat.freq2bin(results.lower_freq),
                                           pdat.freq2bin(results.upper_freq))

        if self.upEntry.get():  # If the Entry field is not empty
            results.upper_power = self.upEntry.get()  # Get the new value
            self.l9.configure(text=str(results.upper_power) +
                              ' dBm')  # update label
            self.pow_spec_plot.set_ylim(int(results.lower_power),
                                        int(results.upper_power))

        if self.lpEntry.get():  # If the Entry field is not empty
            results.lower_power = self.lpEntry.get()  # Get the new value
            self.l10.configure(text=str(results.lower_power) +
                               ' dBm')  # update label
            self.pow_spec_plot.set_ylim(int(results.lower_power),
                                        int(results.upper_power))
コード例 #6
0
ファイル: diurnal.py プロジェクト: ssmith00/LoFASM-Diurnal
cwd2 = os.getcwd()
i = 0

lst = os.listdir(cwd2)
lst.sort()
for filename2 in lst:
    if filename2.endswith(".bbx.gz"):
        lf = bbx.LofasmFile(os.path.join(filename2))
        lf.read_data()

        countavgCC[i] = np.average(lf.data)
        print(filename2 + " average added to array")
        print("\naverage = " + str(countavgCC[i]))

        spect_avg = np.average(lf.data, axis=0)
        countfreqCC[i] = spect_avg[pdat.freq2bin(50)]
        print(filename2 + " freq added to array")
        print("average freq = " + str(countfreqCC[i]))

        countbinCC[i] = np.average(lf.data, axis=0)
        print(filename2 + " avg bin added to array")

        i += 1

        lf.close()

#go into DD channel and take an average of the values in the array
os.chdir(cwd1)
os.chdir(cwd1 + "/bbx/DD")
cwd3 = os.getcwd()
i = 0
コード例 #7
0
ファイル: calibrate_plot.py プロジェクト: shiningsurya/LoFASM
def avgpow(lf, freq):
    x = lf.data[freq2bin(freq), :]
    return (np.mean(x))
コード例 #8
0
ファイル: calibrate_plot.py プロジェクト: shiningsurya/LoFASM
    return (np.mean(x))


if __name__ == '__main__':
    import argparse
    p = argparse.ArgumentParser()
    p.add_argument('fnames', nargs='+')
    p.add_argument('freq', type=float)
    args = p.parse_args()

    x = []

    for f in args.fnames:
        lf = bbx.LofasmFile(f)
        lf.read_data()
        pows = lf.data[freq2bin(args.freq), :]
        avg = np.mean(pows)
        start = lf.header['start_time']
        start_cv = Time(start, scale='utc')
        st = int(lf.header['station'])
        lfstation = LoFASM_Stations[st]
        lon = lfstation.lon * 180 / np.pi
        start_sr = start_cv.sidereal_time('mean', lon)
        start_hr = start_sr.hour

        powmodel = galaxyPower.calculatepower(start_hr, st, args.freq, 0)
        x.append((start_hr, avg, powmodel))

    t, avg, gal = zip(*x)

    def lst2pow(lst):
コード例 #9
0
ファイル: bbxChannelMod.py プロジェクト: shiningsurya/LoFASM
'''
pars_dict = vars(parser.parse_args())
bbxFileHandel = bbx.LofasmFile(pars_dict['path'])
bbxfile = pars_dict['path']
print "File to be read open. "

bbxFileHeader = bbxFileHandel.header
outPath = os.getcwd()
outPath = outPath + '/' + pars_dict['outfile']
outFile = bbx.LofasmFile(outPath, bbxFileHeader, mode='write')
print "File to write created. "

for i in range(int(bbxFileHeader['metadata']['dim1_len'])):
    bbxFileHandel.read_data(1)  # Read one line of data
    spectra = bbxFileHandel.data[:, :]  #.astype(np.float32)
    spectra[:, pdat.freq2bin(float(pars_dict['freq']))] = 0
    #    report(outFile)
    append_data(outFile, spectra)
    #    report(outFile)
    outFile.write()

outFile.close()
'''
data = bbxFileHandel.data[:, :].astype(np.float32)

# select frequancy to zero 
userin = float(pars_dict['freq'])
freqbin = pdat.freq2bin(userin)

# zero out that frequancy
data[:, freqbin] = 0
コード例 #10
0
    x = []

    start_hr_arr = np.zeros(len(args.fnames))

    fil = args.fnames[0]
    lf = bbx.LofasmFile(fil)
    st = int(lf.header['station'])

    # lsts, pows = galaxyPower.loadfile(st, args.freq, args.hor)

    for ii, f in enumerate(args.fnames):  #for loop to read through the data
        lf = bbx.LofasmFile(f)  #and append to an empty list
        lf.read_data()  #the time in lst, the average power
        lofasm_pows = lf.data[:,
                              freq2bin(args.freq)]  #and the given galaxy power
        avg = np.mean(lofasm_pows)  #at that time

        #LOFASM 3 [
        # start = float(lf.header['start_mjd'])
        # start_postmjd = Time(start, format = 'mjd')
        # st = int(lf.header['station'])
        # lfstation = LoFASM_Stations[st]
        # lon = lfstation.lon * 180 / np.pi
        # start_sr = start_postmjd.sidereal_time('mean', lon)
        # start_hr = start_sr.hour
        # start_hr_arr[ii] = start_hr
        # #powmodel = galaxyPower.calculatepower(start_hr, lsts, pows)
        # ]

        # LOFASM 1 [
コード例 #11
0
    fout = open("{}_{}{}".format(args.output,args.polarization.upper(), ".lofasm2d") \
                if not args.output.endswith('.lofasm2d') else args.output,'wb')
    
    #parse input filelist
    with open(args.filelist, 'r') as f:
        #only take files which end in ".lofasm" and are not commented out with '#'
        flist = [x.rstrip('\n') for x in f if x.rstrip('\n').endswith('.lofasm') and not x.startswith('#')]

    Nfiles = len(flist)
    Tsamp = pdat.getSampleTime(8192)
    dur_sec = 300.0 #file duration in seconds
    cadence = args.cadence
    medfilt_stride = args.stride
    #pol = args.polarization.upper()
    MAXSIZE = int(Nfiles * dur_sec / Tsamp / cadence) + 1
    HBIN = pdat.freq2bin(args.hf)
    LBIN = pdat.freq2bin(args.lf)
    Nbins = HBIN - LBIN
    print "bins: ({}, {}), BW: {}".format(HBIN,LBIN, args.hf-args.lf)


    #initialize complex data array in memory
    data = np.zeros((Nbins,MAXSIZE), dtype=np.complex)
    timestamps = []

    print "shape of initialized array: {}".format(np.shape(data))

    #loop over files and extract necessary samples
    i=0
    enterDataset = time()
コード例 #12
0
ファイル: lofasm2d.py プロジェクト: pauvarela3/LoFASM
    #output file
    fout = open("{}_{}{}".format(args.output,args.polarization.upper(), ".lofasm2d") \
                if not args.output.endswith('.lofasm2d') else args.output,'wb')

    #parse input filelist
    flist = glob(os.path.join(args.dataDir, '*.lofasm'))
    flist.sort()

    Nfiles = len(flist)
    Tsamp = pdat.getSampleTime(8192)
    dur_sec = 300.0  #file duration in seconds
    cadence = args.cadence
    medfilt_stride = args.stride
    #pol = args.polarization.upper()
    MAXSIZE = int(Nfiles * dur_sec / Tsamp / cadence) + 1
    HBIN = pdat.freq2bin(args.hf)
    LBIN = pdat.freq2bin(args.lf)
    Nbins = HBIN - LBIN
    print "bins: ({}, {}), BW: {}".format(HBIN, LBIN, args.hf - args.lf)

    #initialize complex data array in memory
    data = np.zeros((Nbins, MAXSIZE), dtype=np.complex)
    timestamps = []

    print "shape of initialized array: {}".format(np.shape(data))

    #loop over files and extract necessary samples
    i = 0
    enterDataset = time()

    for f in flist: