The Python interface uses Boost Python to wrap the C++ functionality. Standard codedoc is available, so use e.g. help(aoflagger.ImageSet) to get help on using the ImageSet class. See the installation instructions on how to get the Python interface working.
This is an example program:
import aoflagger as aof import numpy print("Flagging with AOFlagger version " + aof.AOFlagger.get_version_string()) nch = 256 ntimes = 1000 aoflagger = aof.AOFlagger() # Load strategy from disk (alternatively use 'make_strategy' to use a default one) strategy = aoflagger.load_strategy("example-strategy.rfis") data = aoflagger.make_image_set(ntimes, nch, 8) print("Number of times: " + str(data.width())) print("Number of channels: " + str(data.height())) # When flagging multiple baselines, iterate over the baselines and # call the following code for each baseline # (to use multithreading, make sure to create an imageset for each # thread) # Make eight images: real and imaginary for 4 pol for imgindex in range(8): # Initialize data values = numpy.zeros([ntimes, nch]) data.set_image_buffer(imgindex, values) flags = aoflagger.run(strategy, data) flagvalues = flags.get_buffer() flagcount = sum(sum(flagvalues)) print("Percentage flags on zero data: " + str(flagcount * 100.0 / (nch*ntimes)) + "%") # Collect statistics # We create some unrealistic time and frequency arrays to be able # to run these functions. Normally, these should hold the time # and frequency values. timeArray = numpy.linspace(0.0, ntimes, num=ntimes, endpoint=False) freqArray = numpy.linspace(0.0, nch, num=nch, endpoint=False) qs = aoflagger.make_quality_statistics(timeArray, freqArray, 4, False) aoflagger.collect_statistics(qs, data, flags, aoflagger.make_flag_mask(ntimes, nch, False), 0, 1) try: aoflagger.write_statistics(qs, "test.qs") except: print("write_statistics() failed")
The above program demonstrates both how to make an 'imageset' (the data for a single baseline) and run the flagger on this set, as well as how to extract the quality statistics from it.
Here's an example that calculates the false-positives ratio of a flagging strategy on Gaussian data:
import aoflagger as aof import numpy import sys nch = 256 ntimes = 1000 count=50 # number of trials in the false-positives test aoflagger = aof.AOFlagger() strategy = aoflagger.load_strategy("example-strategy.rfis") data = aoflagger.make_image_set(ntimes, nch, 8) ratiosum = 0.0 ratiosumsq = 0.0 for repeat in range(count): for imgindex in range(8): # Initialize data with random numbers values = numpy.random.normal(0, 1, [ntimes, nch]) data.set_image_buffer(imgindex, values) flags = aoflagger.run(strategy, data) flagvalues = flags.get_buffer() ratio = float(sum(sum(flagvalues))) / (nch*ntimes) ratiosum += ratio ratiosumsq += ratio*ratio sys.stdout.write('.') sys.stdout.flush() print('') print("Percentage flags (false-positive rate) on Gaussian data: " + str(ratiosum * 100.0 / count) + "% +/- " + str(numpy.sqrt((ratiosumsq/count - ratiosum*ratiosum / (count*count))) * 100.0) )
Wiki: Home
Wiki: changelog-2.15.0
Wiki: installation_instructions