blimpy/waterfall.py
def cmd_tool(args=None):
    """ Command line tool for plotting and viewing info on blimpy files """

    from argparse import ArgumentParser

    parser = ArgumentParser(description="Command line utility for reading and plotting blimpy files.")

    parser.add_argument('filename', type=str,
                        help='Name of file to read')
    parser.add_argument('-p', action='store',  default='a', dest='what_to_plot', type=str,
                        help='Show: "w" waterfall (freq vs. time) plot; "s" integrated spectrum plot; \
                        "t" for time series; "mm" for spectrum including min max; "k" for kurtosis; \
                        "a" for all available plots and information; and "ank" for all but kurtosis.')
    parser.add_argument('-b', action='store', default=None, dest='f_start', type=float,
                        help='Start frequency (begin), in MHz')
    parser.add_argument('-e', action='store', default=None, dest='f_stop', type=float,
                        help='Stop frequency (end), in MHz')
    parser.add_argument('-B', action='store', default=None, dest='t_start', type=int,
                        help='Start integration (begin, inclusive) ID ')
    parser.add_argument('-E', action='store', default=None, dest='t_stop', type=int,
                        help='Stop integration (end, exclusive) ID')
    parser.add_argument('-i', action='store_true', default=False, dest='info_only',
                        help='Show info only')
    parser.add_argument('-a', action='store_true', default=False, dest='average',
                       help='average along time axis (plot spectrum only)')
    parser.add_argument('-s', action='store', default='', dest='plt_filename', type=str,
                       help='save plot graphic to file (give filename as argument)')
    parser.add_argument('-S', action='store_true', default=False, dest='save_only',
                       help='Turn off plotting of data and only save to file.')
    parser.add_argument('-D', action='store_false', default=True, dest='blank_dc',
                       help='Use to not blank DC bin.')
    parser.add_argument('-H', action='store_true', default=False, dest='to_hdf5',
                       help='Write file to hdf5 format.')
    parser.add_argument('-F', action='store_true', default=False, dest='to_fil',
                       help='Write file to .fil format.')
    parser.add_argument('-o', action='store', default=None, dest='filename_out', type=str,
                        help='Filename output (if not probided, the name will be the same but with apropiate extension).')
    parser.add_argument('-l', action='store', default=None, dest='max_load', type=float,
                        help='Maximum data limit to load. Default:1GB')

    if args is None:
        args = sys.argv[1:]

    parse_args = parser.parse_args(args)

    # Open blimpy data
    filename = parse_args.filename
    load_data = not parse_args.info_only
    info_only = parse_args.info_only
    filename_out = parse_args.filename_out

    fil = Waterfall(filename, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t_start=parse_args.t_start, t_stop=parse_args.t_stop, load_data=load_data, max_load=parse_args.max_load)
    fil.info()

    #Check the size of selection.
    if fil.container.isheavy() or parse_args.to_hdf5 or parse_args.to_fil:
        info_only = True

    # And if we want to plot data, then plot data.

    if not info_only:
        print('')

        if parse_args.blank_dc:
            logger.info("Blanking DC bin")
            n_coarse_chan = fil.calc_n_coarse_chan()
            fil.blank_dc(n_coarse_chan)

        if parse_args.what_to_plot == "w":
            plt.figure("waterfall", figsize=(8, 6))
            fil.plot_waterfall(f_start=parse_args.f_start, f_stop=parse_args.f_stop)
        elif parse_args.what_to_plot == "s":
            plt.figure("Spectrum", figsize=(8, 6))
            fil.plot_spectrum(logged=True, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t='all')
        elif parse_args.what_to_plot == "mm":
            plt.figure("min max", figsize=(8, 6))
            fil.plot_spectrum_min_max(logged=True, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t='all')
        elif parse_args.what_to_plot == "k":
            plt.figure("kurtosis", figsize=(8, 6))
            fil.plot_kurtosis(f_start=parse_args.f_start, f_stop=parse_args.f_stop)
        elif parse_args.what_to_plot == "t":
            plt.figure("Time Series", figsize=(8, 6))
            fil.plot_time_series(f_start=parse_args.f_start, f_stop=parse_args.f_stop,orientation='h')
        elif parse_args.what_to_plot == "a":
            plt.figure("Multiple diagnostic plots", figsize=(12, 9),facecolor='white')
            fil.plot_all(logged=True, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t='all')
        elif parse_args.what_to_plot == "ank":
            plt.figure("Multiple diagnostic plots", figsize=(12, 9),facecolor='white')
            fil.plot_all(logged=True, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t='all',kutosis=False)

        if parse_args.plt_filename != '':
            plt.savefig(parse_args.plt_filename)

        if not parse_args.save_only:
            if 'DISPLAY' in os.environ.keys():
                plt.show()
            else:
                logger.warning("No $DISPLAY available.")

    else:

        if parse_args.to_hdf5 and parse_args.to_fil:
            raise Warning('Either provide to_hdf5 or to_fil, but not both.')

        if parse_args.to_hdf5:
            if not filename_out:
                filename_out = filename.replace('.fil','.h5')
            elif '.h5' not in filename_out:
                filename_out = filename_out.replace('.fil','')+'.h5'

            logger.info('Writing file : %s'%(filename_out))
            fil.write_to_hdf5(filename_out)
            logger.info('File written.')

        if parse_args.to_fil:
            if not filename_out:
                filename_out = filename.replace('.h5','.fil')
            elif '.fil' not in filename_out:
                filename_out = filename_out.replace('.h5','')+'.fil'

            logger.info('Writing file : %s'%(filename_out))
            fil.write_to_fil(filename_out)
            logger.info('File written.')
def cmd_tool(args=None):
    """ Command line tool for plotting and viewing info on blimpy files """

    from argparse import ArgumentParser

    parser = ArgumentParser(description="Command line utility for reading and plotting blimpy files.")

    parser.add_argument('filename', type=str,
                        help='Name of file to read')
    parser.add_argument('-p', action='store',  default='a', dest='what_to_plot', type=str,
                        help='Show: "w" waterfall (freq vs. time) plot; "s" integrated spectrum plot; \
                        "t" for time series; "mm" for spectrum including min max; "k" for kurtosis; \
                        "a" for all available plots and information; and "ank" for all but kurtosis.')
    parser.add_argument('-b', action='store', default=None, dest='f_start', type=float,
                        help='Start frequency (begin), in MHz')
    parser.add_argument('-e', action='store', default=None, dest='f_stop', type=float,
                        help='Stop frequency (end), in MHz')
    parser.add_argument('-B', action='store', default=None, dest='t_start', type=int,
                        help='Start integration (begin, inclusive) ID ')
    parser.add_argument('-E', action='store', default=None, dest='t_stop', type=int,
                        help='Stop integration (end, exclusive) ID')
    parser.add_argument('-i', action='store_true', default=False, dest='info_only',
                        help='Show info only')
    parser.add_argument('-a', action='store_true', default=False, dest='average',
                       help='average along time axis (plot spectrum only)')
    parser.add_argument('-s', action='store', default='', dest='plt_filename', type=str,
                       help='save plot graphic to file (give filename as argument)')
    parser.add_argument('-S', action='store_true', default=False, dest='save_only',
                       help='Turn off plotting of data and only save to file.')
    parser.add_argument('-D', action='store_false', default=True, dest='blank_dc',
                       help='Use to not blank DC bin.')
    parser.add_argument('-H', action='store_true', default=False, dest='to_hdf5',
                       help='Write file to hdf5 format.')
    parser.add_argument('-F', action='store_true', default=False, dest='to_fil',
                       help='Write file to .fil format.')
    parser.add_argument('-o', action='store', default=None, dest='filename_out', type=str,
                        help='Filename output (if not probided, the name will be the same but with apropiate extension).')
    parser.add_argument('-l', action='store', default=None, dest='max_load', type=float,
                        help='Maximum data limit to load. Default:1GB')

    if args is None:
        args = sys.argv[1:]

    parse_args = parser.parse_args(args)

    # Open blimpy data
    filename = parse_args.filename
    load_data = not parse_args.info_only
    info_only = parse_args.info_only
    filename_out = parse_args.filename_out

    fil = Waterfall(filename, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t_start=parse_args.t_start, t_stop=parse_args.t_stop, load_data=load_data, max_load=parse_args.max_load)
    fil.info()

    #Check the size of selection.
    if fil.container.isheavy() or parse_args.to_hdf5 or parse_args.to_fil:
        info_only = True

    # And if we want to plot data, then plot data.

    if not info_only:
        print('')

        if parse_args.blank_dc:
            logger.info("Blanking DC bin")
            n_coarse_chan = fil.calc_n_coarse_chan()
            fil.blank_dc(n_coarse_chan)

        if parse_args.what_to_plot == "w":
            plt.figure("waterfall", figsize=(8, 6))
            fil.plot_waterfall(f_start=parse_args.f_start, f_stop=parse_args.f_stop)
        elif parse_args.what_to_plot == "s":
            plt.figure("Spectrum", figsize=(8, 6))
            fil.plot_spectrum(logged=True, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t='all')
        elif parse_args.what_to_plot == "mm":
            plt.figure("min max", figsize=(8, 6))
            fil.plot_spectrum_min_max(logged=True, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t='all')
        elif parse_args.what_to_plot == "k":
            plt.figure("kurtosis", figsize=(8, 6))
            fil.plot_kurtosis(f_start=parse_args.f_start, f_stop=parse_args.f_stop)
        elif parse_args.what_to_plot == "t":
            plt.figure("Time Series", figsize=(8, 6))
            fil.plot_time_series(f_start=parse_args.f_start, f_stop=parse_args.f_stop,orientation='h')
        elif parse_args.what_to_plot == "a":
            plt.figure("Multiple diagnostic plots", figsize=(12, 9),facecolor='white')
            fil.plot_all(logged=True, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t='all')
        elif parse_args.what_to_plot == "ank":
            plt.figure("Multiple diagnostic plots", figsize=(12, 9),facecolor='white')
            fil.plot_all(logged=True, f_start=parse_args.f_start, f_stop=parse_args.f_stop, t='all',kutosis=False)

        if parse_args.plt_filename != '':
            plt.savefig(parse_args.plt_filename)

        if not parse_args.save_only:
            if 'DISPLAY' in os.environ.keys():
                plt.show()
            else:
                logger.warning("No $DISPLAY available.")

    else:

        if parse_args.to_hdf5 and parse_args.to_fil:
            raise Warning('Either provide to_hdf5 or to_fil, but not both.')

        if parse_args.to_hdf5:
            if not filename_out:
                filename_out = filename.replace('.fil','.h5')
            elif '.h5' not in filename_out:
                filename_out = filename_out.replace('.fil','')+'.h5'

            logger.info('Writing file : %s'%(filename_out))
            fil.write_to_hdf5(filename_out)
            logger.info('File written.')

        if parse_args.to_fil:
            if not filename_out:
                filename_out = filename.replace('.h5','.fil')
            elif '.fil' not in filename_out:
                filename_out = filename_out.replace('.h5','')+'.fil'

            logger.info('Writing file : %s'%(filename_out))
            fil.write_to_fil(filename_out)
            logger.info('File written.')
def cmd_tool ( args = None ) : from argparse import ArgumentParser parser = ArgumentParser ( description = "Command line utility for reading and plotting blimpy files." ) parser . add_argument ( 'filename' , type = str , help = 'Name of file to read' ) parser . add_argument ( '-p' , action = 'store' , default = 'a' , dest = 'what_to_plot' , type = str , help = 'Show: "w" waterfall (freq vs. time) plot; "s" integrated spectrum plot; \
                        "t" for time series; "mm" for spectrum including min max; "k" for kurtosis; \
                        "a" for all available plots and information; and "ank" for all but kurtosis.' ) parser . add_argument ( '-b' , action = 'store' , default = None , dest = 'f_start' , type = float , help = 'Start frequency (begin), in MHz' ) parser . add_argument ( '-e' , action = 'store' , default = None , dest = 'f_stop' , type = float , help = 'Stop frequency (end), in MHz' ) parser . add_argument ( '-B' , action = 'store' , default = None , dest = 't_start' , type = int , help = 'Start integration (begin, inclusive) ID ' ) parser . add_argument ( '-E' , action = 'store' , default = None , dest = 't_stop' , type = int , help = 'Stop integration (end, exclusive) ID' ) parser . add_argument ( '-i' , action = 'store_true' , default = False , dest = 'info_only' , help = 'Show info only' ) parser . add_argument ( '-a' , action = 'store_true' , default = False , dest = 'average' , help = 'average along time axis (plot spectrum only)' ) parser . add_argument ( '-s' , action = 'store' , default = '' , dest = 'plt_filename' , type = str , help = 'save plot graphic to file (give filename as argument)' ) parser . add_argument ( '-S' , action = 'store_true' , default = False , dest = 'save_only' , help = 'Turn off plotting of data and only save to file.' ) parser . add_argument ( '-D' , action = 'store_false' , default = True , dest = 'blank_dc' , help = 'Use to not blank DC bin.' ) parser . add_argument ( '-H' , action = 'store_true' , default = False , dest = 'to_hdf5' , help = 'Write file to hdf5 format.' ) parser . add_argument ( '-F' , action = 'store_true' , default = False , dest = 'to_fil' , help = 'Write file to .fil format.' ) parser . add_argument ( '-o' , action = 'store' , default = None , dest = 'filename_out' , type = str , help = 'Filename output (if not probided, the name will be the same but with apropiate extension).' ) parser . add_argument ( '-l' , action = 'store' , default = None , dest = 'max_load' , type = float , help = 'Maximum data limit to load. Default:1GB' ) if args is None : args = sys . argv [ 1 : ] parse_args = parser . parse_args ( args ) # Open blimpy data filename = parse_args . filename load_data = not parse_args . info_only info_only = parse_args . info_only filename_out = parse_args . filename_out fil = Waterfall ( filename , f_start = parse_args . f_start , f_stop = parse_args . f_stop , t_start = parse_args . t_start , t_stop = parse_args . t_stop , load_data = load_data , max_load = parse_args . max_load ) fil . info ( ) #Check the size of selection. if fil . container . isheavy ( ) or parse_args . to_hdf5 or parse_args . to_fil : info_only = True # And if we want to plot data, then plot data. if not info_only : print ( '' ) if parse_args . blank_dc : logger . info ( "Blanking DC bin" ) n_coarse_chan = fil . calc_n_coarse_chan ( ) fil . blank_dc ( n_coarse_chan ) if parse_args . what_to_plot == "w" : plt . figure ( "waterfall" , figsize = ( 8 , 6 ) ) fil . plot_waterfall ( f_start = parse_args . f_start , f_stop = parse_args . f_stop ) elif parse_args . what_to_plot == "s" : plt . figure ( "Spectrum" , figsize = ( 8 , 6 ) ) fil . plot_spectrum ( logged = True , f_start = parse_args . f_start , f_stop = parse_args . f_stop , t = 'all' ) elif parse_args . what_to_plot == "mm" : plt . figure ( "min max" , figsize = ( 8 , 6 ) ) fil . plot_spectrum_min_max ( logged = True , f_start = parse_args . f_start , f_stop = parse_args . f_stop , t = 'all' ) elif parse_args . what_to_plot == "k" : plt . figure ( "kurtosis" , figsize = ( 8 , 6 ) ) fil . plot_kurtosis ( f_start = parse_args . f_start , f_stop = parse_args . f_stop ) elif parse_args . what_to_plot == "t" : plt . figure ( "Time Series" , figsize = ( 8 , 6 ) ) fil . plot_time_series ( f_start = parse_args . f_start , f_stop = parse_args . f_stop , orientation = 'h' ) elif parse_args . what_to_plot == "a" : plt . figure ( "Multiple diagnostic plots" , figsize = ( 12 , 9 ) , facecolor = 'white' ) fil . plot_all ( logged = True , f_start = parse_args . f_start , f_stop = parse_args . f_stop , t = 'all' ) elif parse_args . what_to_plot == "ank" : plt . figure ( "Multiple diagnostic plots" , figsize = ( 12 , 9 ) , facecolor = 'white' ) fil . plot_all ( logged = True , f_start = parse_args . f_start , f_stop = parse_args . f_stop , t = 'all' , kutosis = False ) if parse_args . plt_filename != '' : plt . savefig ( parse_args . plt_filename ) if not parse_args . save_only : if 'DISPLAY' in os . environ . keys ( ) : plt . show ( ) else : logger . warning ( "No $DISPLAY available." ) else : if parse_args . to_hdf5 and parse_args . to_fil : raise Warning ( 'Either provide to_hdf5 or to_fil, but not both.' ) if parse_args . to_hdf5 : if not filename_out : filename_out = filename . replace ( '.fil' , '.h5' ) elif '.h5' not in filename_out : filename_out = filename_out . replace ( '.fil' , '' ) + '.h5' logger . info ( 'Writing file : %s' % ( filename_out ) ) fil . write_to_hdf5 ( filename_out ) logger . info ( 'File written.' ) if parse_args . to_fil : if not filename_out : filename_out = filename . replace ( '.h5' , '.fil' ) elif '.fil' not in filename_out : filename_out = filename_out . replace ( '.h5' , '' ) + '.fil' logger . info ( 'Writing file : %s' % ( filename_out ) ) fil . write_to_fil ( filename_out ) logger . info ( 'File written.' )
Command line tool for plotting and viewing info on blimpy files
Command line tool for plotting and viewing info on blimpy files