#!/usr/bin/python3 import argparse, os, sys, re def dir_path(string): if os.path.isdir(string): return string else: raise NotADirectoryError(string) parser = argparse.ArgumentParser() parser.add_argument('--path', type=dir_path, default=".cfadata", help= 'paste path to biog.txt file') try : args = parser.parse_args() except NotADirectoryError: print("Must use option --path to existing directory or have .cfadata in current directory", file=sys.stderr) sys.exit(1) root, _, filenames = next(os.walk(args.path)) merged = [] counters = {} #open the files for filename in filenames: try: m = re.search('[A-z]+0x([0-9a-f]+)\.data', filename) me = m.group(1) counters[me] = 0 with open(os.path.join(root, filename), 'r') as file: for line in file: # data = [int(x.strip()) for x in line.split(',')] data = [int(line.strip())] data = [me, *data] merged.append(data) except: pass # Sort by timestamp (the second element) # take second element for sort def takeSecond(elem): return elem[1] merged.sort(key=takeSecond) # for m in merged: # print(m) single = [] curr = 0 # merge the data # for (me, time, value) in merged: for (me, value) in merged: # check now much this changes old = counters[me] change = value - old counters[me] = value # add change to the current curr = curr + change single.append( value ) pass print(single) # single = sorted(single)[:len(single)-100] # ms = max(single) # single = [float(x) / 2500.0 for x in single] #print # for t, v in single: # print([t, v]) # print(len(single)) # print(max(single)) # print(min(single)) # bins = [0, 5.37751600e+04, 1.06903320e+05, 1.60031480e+05, 2.13159640e+05, 2.66287800e+05, 3.19415960e+05, 3.72544120e+05, 4.25672280e+05, 4.78800440e+05, 5.31928600e+05, 5.85056760e+05, 6.38184920e+05, 6.91313080e+05, 7.44441240e+05, 7.97569400e+05, 8.50697560e+05, 9.03825720e+05, 9.56953880e+05, 1.01008204e+06, 1.06321020e+06, 1.11633836e+06, 1.16946652e+06, 1.22259468e+06, 1.27572284e+06, 1.32885100e+06, 1.38197916e+06, 1.43510732e+06, 1.48823548e+06, 1.54136364e+06, 1.59449180e+06, 1.64761996e+06, 1.70074812e+06, 1.75387628e+06, 1.80700444e+06, 1.86013260e+06, 1.91326076e+06, 1.96638892e+06, 2.01951708e+06, 2.07264524e+06, 2.12577340e+06, 2.17890156e+06, 2.23202972e+06, 2.28515788e+06, 2.33828604e+06, 2.39141420e+06, 2.44454236e+06, 2.49767052e+06, 2.55079868e+06, 2.60392684e+06, 3.0e+06] # # bins = [float(x) / 2500.0 for x in bins] # # print([round(b, 2) for b in bins]) # import numpy # # hist1, _ = numpy.histogram(single, density=True, bins=50) # hist2, _ = numpy.histogram(single, density=True, bins=bins) # # print(hist1) # print([1000.0 * h for h in hist2]) # # for v in single: # # print([v])