def flag_bvis(bvis): ntimes, nant, _, nch, npol = bvis.vis.shape aoflagger = aof.AOFlagger() # Shape of returned buffer is actually nch, ntimes data = aoflagger.make_image_set(ntimes, nch, npol * 2) log.info("Number of times: " + str(data.width())) log.info("Number of antennas:" + str(nant)) log.info("Number of channels: " + str(data.height())) log.info("Number of polarisations: " + str(npol)) eMERLIN_strategy = \ aoflagger.load_strategy(erp_params['flag_strategy']) for a2 in range(0, nant - 1): for a1 in range(a2 + 1, nant): for pol in range(npol): data.set_image_buffer( 2 * pol, numpy.real(bvis.vis[:, a1, a2, :, pol]).T) data.set_image_buffer( 2 * pol + 1, numpy.imag(bvis.vis[:, a1, a2, :, pol]).T) flags = aoflagger.run(eMERLIN_strategy, data) flagvalues = flags.get_buffer() * 1 bvis.data['flags'][:, a1, a2, :, :] = flagvalues.T[ ..., numpy.newaxis] flagcount = sum(sum(flagvalues)) log.info( str(a1) + " " + str(a2) + ": percentage flags on zero data: " + str(flagcount * 100.0 / (nch * ntimes)) + "%")
def simple(onArray, offArray): """ simple approach to aoflagger Parameters ------------- onArray : numpy.array Data array for ON measurement offArray : numpy.array Data array for OFF measurement Returns ------------- numpy.array mask of invalid frequency bins (contaminated by RFI) Raises ------------- AssertionError """ import aoflagger as aof drange = OnOffCalc.misc.getDatarange(onArray.shape[1]) dataMask = numpy.ones(onArray.shape) validfreq = len(drange) validtimes = onArray.shape[0] onData = numpy.zeros([validfreq, validtimes], dtype=numpy.float64) offData = numpy.zeros([validfreq, validtimes], dtype=numpy.float64) onData[:, :] = numpy.transpose(onArray[:, drange]) offData[:, :] = numpy.transpose(offArray[:, drange]) aoflagger = aof.AOFlagger() strategy = aoflagger.load_strategy(aof_default_stategy) data = aoflagger.make_image_set(validtimes, validfreq, 2) data.set_image_buffer(0, onData) data.set_image_buffer(1, offData) flags = aoflagger.run(strategy, data) flagvalues = flags.get_buffer() dataMask[:, drange] = numpy.transpose(flagvalues) #return onFiltered,offFiltered,OnOff.misc.constants.dataRange[uniqueIdList] return dataMask
import aoflagger as aof import matplotlib.pyplot as plt import numpy import sys nch = 256 ntimes = 1000 aoflagger = aof.AOFlagger() strategy = aoflagger.make_strategy(aof.TelescopeId.Generic, 0, 150e6, 1, 4e3) data = aoflagger.make_image_set(ntimes, nch, 4) ratiosum = 0.0 ratiosumsq = 0.0 # Several consecutive values at the same frequency are increased # in amplitude to simulate a RFI source. These values define # the channel and the start and duration of the added signal. rfi_y = int(nch * 0.3) rfi_x_start = int(ntimes * 0.2) rfi_x_end = int(ntimes * 0.4) rfi_strength = 1 # 1 sigma above the noise for imgindex in range(4): # Initialize data with random numbers values = numpy.random.normal(0, 1, [nch, ntimes]) # Add fake transmitter values[rfi_y, rfi_x_start:rfi_x_end] = values[ rfi_y, rfi_x_start:rfi_x_end] + rfi_strength data.set_image_buffer(imgindex, values)