view find.py @ 79:84f96c5fe791

Use different message ID that does not result in "Query UNTERMINATE" messages in the error log. Fix testsrq. Rename queryrsb to querystb as that matches the operating manual.
author Daniel O'Connor <doconnor@gsoft.com.au>
date Fri, 27 Sep 2024 16:53:43 +0930
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)