diff --git a/osak/__main__.py b/osak/__main__.py index 31a4cb5..3d6dae7 100644 --- a/osak/__main__.py +++ b/osak/__main__.py @@ -22,5 +22,6 @@ psr = ArgumentParser( ) psr.add_argument("dir", nargs="+") +cntr = 0 for i in psr.parse_args().dir: - process(i) + process(i,cntr) diff --git a/osak/procdir.py b/osak/procdir.py index c56d51d..2eb6b69 100644 --- a/osak/procdir.py +++ b/osak/procdir.py @@ -2,6 +2,8 @@ import os import sys from brukeropusreader import read_file import re +import numpy as np +import pandas as pd match_opus = re.compile(r"_[0-9]+(\.[0-9]+)?T.0$") @@ -19,7 +21,26 @@ class BlankSpace: def __getitem__(self, _): return " " -def process(s): +def average(fn, freq, fields): + frame = pd.DataFrame() + frame["f"] = np.linspace(freq[0], freq[1], num=freq[2]) + keys=[] + + for k,v in fields.items(): + keys.append(k) + frame[k] = np.zeros(freq[2]) + for i in v: + frame[k] = frame[k] + np.asarray(i) + frame[k] = frame[k] / len(v) + + keys.sort(key=lambda x:float(x)) + keys.insert(0, "f") + frame[keys].to_csv( + path_or_buf = fn, + index = False + ) + +def process(s,cntr): groupings = {} dir = os.listdir(s) i = 0 @@ -30,7 +51,8 @@ def process(s): v = re.search(match_opus, fn) if v is None: continue - field = v.group()[1:len(v.group())-2] + # lob off "T.0" + field = v.group()[1:len(v.group())-3] dat = read_file(f"{s}/{fn}") if "ScSm" not in dat: @@ -42,3 +64,7 @@ def process(s): blanks = f"Processed {i}/{len(dir)}".translate(BlankSpace()) sys.stderr.write(f"{blanks}\rProcessed {i} files\n") + + i = 1 + for k,v in groupings.items(): + average(f"avg-{i}-{cntr}.csv", k, v)