Exemplo n.º 1
0
            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)) + "%")
Exemplo n.º 2
0
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
Exemplo n.º 3
0
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)