#!/usr/bin/env python import os import sys import argparse from time import sleep # Define argparse arguments parser = argparse.ArgumentParser() parser.add_argument("-b", "--bandwidth", type=str, required=True) parser.add_argument("-c", "--channels", type=str, default=1024) parser.add_argument("-t", "--t_int", type=str, default=0.1) parser.add_argument("-d", "--duration", type=str, required=True) parser.add_argument("-f", "--fmin", type=float, required=True) parser.add_argument("-F", "--fmax", type=float, required=True) args = parser.parse_args() bandwidth=args.bandwidth channels=args.channels t_int=args.t_int duration=args.duration fmin=args.fmin fmax=args.fmax #Define GRC observation parameters bandwidth = str(bandwidth) channels = str(channels) t_int = str(t_int) duration = str(duration) fmin = float(fmin) fmax = float(fmax) nbins = str(int(float(t_int) * float(bandwidth)/float(channels))) #Delete pre-existing observation.dat file for file_name in os.listdir('.'): if file_name.endswith('.dat'): try: os.remove(file_name) except OSError: pass try: os.remove('rfi_plot.png') except OSError: pass print('\n\033[1;33;48m+=================================================================+') print('\033[1;33;48m| \033[1;36;48mCygnusRFI\033[1;33;48m:\033[1;32;48m An open-source Radio Frequency Interference analyzer\033[1;33;48m |') print('\033[1;33;48m+=================================================================+') sleep(0.5) print('\n\033[1;33;48m\033[4;33;48mRFI Measurement Parameters:\033[0;32;48m') sleep(0.15) print(('\033[1;32;48mFrequency range to scan: \033[1;36;48m'+str(float(fmin)/1000000)+'-'+str(float(fmax)/1000000)+' MHz')) sleep(0.15) print(('\033[1;32;48mBandwidth per spectrum: \033[1;36;48m'+str(float(bandwidth)/1000000)+' MHz')) sleep(0.15) print(('\033[1;32;48mIntegration time per spectrum: \033[1;36;48m'+duration+' sec')) sleep(0.15) print(('\033[1;32;48mNumber of channels per spectrum (FFT Size should be a power of 2): \033[1;36;48m'+str(channels))) sleep(0.15) print(('\033[1;32;48mIntegration time per FFT sample: \033[1;36;48m'+t_int+' sec')) sleep(0.5) print(("\n\033[1;32;48mEstimated completion time: \033[1;36;48m"+str(float(duration)*float(fmax-fmin)/float(bandwidth))+" sec")) sleep(0.5) #proceed = eval(input("\n\033[1;36;48mProceed to measurement? [Y/n]: \033[1;33;48m")) proceed = 'Y' if proceed.lower() != 'n' and proceed.lower() != 'no': print('\n\033[1;33;48m+=================================================================+') print('\033[1;33;48m| [+] \033[1;32;48m Starting measurement...\033[1;33;48m |') print('\033[1;33;48m+=================================================================+\n') q=0 for freq in range(int(fmin), int(fmax), int(float(bandwidth))): print(("\033[1;33;48m\n---------------------------------------------------------------------------\n \033[1;33;48m[*] \033[1;32;48mCurrently monitoring f_center = "+str(0.000001*freq)+" +/- "+str(float(float(bandwidth)*0.000001)/2)+" MHz (iteration: "+str(q)+")...\n\033[1;33;48m---------------------------------------------------------------------------")) #Define observation frequency f_center = str(freq) #Execute top_block.py with parameters print('\033[0m') sys.argv = ['top_block.py', '--c-freq='+f_center, '--samp-rate='+bandwidth, '--nchan='+channels, '--nbin='+nbins, '--obs-time='+duration] exec(compile(open('top_block.py', "rb").read(), 'top_block.py', 'exec')) os.rename('observation.dat', str(q)+'.dat') q = q+1 print('\n\033[1;33;48m+=================================================================+') print('\033[1;33;48m| \033[1;32;48mMeasurement finished!\033[1;33;48m |') print('\033[1;33;48m+=================================================================+\n') f_center = str(fmin) sys.argv = ['rfi_plotter.py', 'freq='+f_center, 'samp_rate='+bandwidth, 'nchan='+channels, 'nbin='+nbins, 'n='+str(q), 'dur='+duration, 'fminimum='+str(fmin), 'fmaximum='+str(fmax)] exec(compile(open('rfi_plotter.py', "rb").read(), 'rfi_plotter.py', 'exec')) print('\033[1;32;48mYour data has been saved as \033[1;36;48mrfi_plot.png\033[1;32;48m.') else: print('\n\033[1;31;48m[!] Exiting...\n')