view find.py @ 85:60ad91b4c67c default tip

Add 'quick' option to use a faster sweep time with no averaging. Useful for testing the hardware is setup correctly without having to wait 3 minutes.
author Daniel O'Connor <doconnor@gsoft.com.au>
date Mon, 21 Oct 2024 14:12:50 +1030
parents 91b476ebc0f2
children
line wrap: on
line source

#!/usr/bin/env python

import datafile
import getopt
import numpy
import sys
from functools import reduce

if __name__ == "__main__":
    opts, args = getopt.getopt(sys.argv[1:], "e:hm:s")

    minlev = None
    exptag = None
    dostats = False
    for o, a in opts:
        if o == "-h":
            print("""Find data files with certain characteristics

%s [-h] [-e exp] [-m min] [-s] file [file ..]
	exp	Limit to experiment tag exp
        min	Find files with power greater than min
        -s	Print stats about files
""")
        elif o == "-e":
            exptag = a
        elif o == "-m":
            minlev = float(a)
        elif o == "-s":
            dostats = True
        else:
            print("Unknown option " + o)
            sys.exit(1)
            
    if len(args) == 0:
        print("Need at least one file to analyse")
        sys.exit(1)

    minfiles = []
    if dostats:
        print("%-50s %7s %7s %7s (dBm)" % ("Name", "Min", "Mean", "Max"))
    for fn in args:
        dfile = datafile.DataFile(fn)

        if exptag != None and dfile['TAG'] != exptag:
            continue
        
        if minlev != None:
            if reduce(lambda x, y: x or y, dfile.powers > minlev):
                minfiles.append(fn)

        if dostats:
            print("%-50s %7.2f %7.2f %7.2f" % (fn, dfile.powers.min(), dfile.powers.mean(), dfile.powers.max()))
                                               
    if minlev != None:
        if dostats:
            print("")
        print("Files with any sample exceeding %.2f dBm:" % (minlev))
        for fn in minfiles:
            print(fn)