#!/usr/bin/env python3
"""
plot multiple single channel data sets stored as .npy files
"""
import numpy as np
import matplotlib.pyplot as plt
import argparse
   
[docs]def plot_data(args, data):
    nsp = len(data)
    plen = min([len(d) for d in data])
    if args.maxlen and args.maxlen < plen:
        plen = args.maxlen
        
    tt = range(0, plen)
          
    for sp in range(0,nsp):        
        if sp == 0:
            ax0 = plt.subplot(nsp,1,sp+1)
            ax0.set_title(args.title)
            ax = ax0
        else:
            ax = plt.subplot(nsp,1,sp+1, sharex=ax0)
        lastplot = sp == nsp-1
            
        ax.set_ylabel("{}".format(sp))                  
        plt.plot(tt, data[sp][:plen])
        plt.tick_params('x', labelbottom=lastplot)
 
    ax.set_xlabel("Samples")
    plt.show()
    return None 
[docs]def load_data(args):
    data = []
    for fn in args.files:
        if args.data_type is None:
            data.append(np.load(fn))
        else:
            data.append(np.fromfile(fn, dtype=args.np_data_type))
        
    return data 
[docs]def run_main(args):
    if args.data_type is None:
        print("plot .npy file")
    elif args.data_type == 16:
        args.np_data_type = np.int16
        args.WSIZE = 2
    elif args.data_type == 8:
        args.np_data_type = np.int8
        args.WSIZE = 1
    else:
        args.np_data_type = np.int32
        args.WSIZE = 4    
    
    plot_data(args, load_data(args)) 
[docs]def get_parser():
    parser = argparse.ArgumentParser(description='Plot multiple data files')
    parser.add_argument('--title', default="multiplot", help="Plot Title")
    parser.add_argument('--data_type', default=None, help="default: .npy file, else 16 or 32 for raw data")
    parser.add_argument('--maxlen', type=int, default=None, help="max length to plot")
    parser.add_argument('files', nargs='+', help='file names')
    return parser 
if __name__ == '__main__':
    run_main(get_parser().parse_args())