#!/usr/bin/env python program = 'vdifbstate' author = 'Walter Brisken' version = '0.2' verdate = '20160610' from os import system from string import split from sys import exit, argv def usage(): print '\n%s ver. %s %s %s\n' % (program, version, author, verdate) print 'A VDIF state counter for multi-thread VDIF data. Uses vmux' print 'and m5bstate to do the heavy lifting.\n' print 'Usage : %s []\n' % program print ' is the name of the VDIF file\n' print ' is the size of each input VDIF frame, inc. header (e.g., 5032)\n' print ' is the stream data rate (Mbps)\n' print ' is the number of frames to bstate-erize\n' print ' is number of bytes into file to start decoding\n' print 'Note: Only works on 2-bit real data for now...\n' if len(argv) < 6: usage() exit() infile = argv[1] framesize = int(argv[2]) datarate = int(argv[3]) threadlist = argv[4] nt = len(split(threadlist, ',')) nframes = int(argv[5]) if len(argv) > 6: offset = int(argv[6]) else: offset = 0 nc = 1 while(nc < nt): nc *= 2 outputpayload = nc*(framesize-32) framespersecond = (datarate*1000000)/(nt*(framesize-32)*8) outputdatarate = outputpayload*framespersecond*8/1000000 cmd = 'vmux %s %d %d %s - %d | m5bstate - VDIF_%d-%d-%d-2 %d' % (infile, framesize, framespersecond, threadlist, offset, outputpayload, outputdatarate, nc, nframes) print 'Executing: %s' % cmd system(cmd)