#!/usr/bin/python import sys import numpy as np sk_file = open(sys.argv[1]) try: div = float(sys.argv[2]) except: div = 2.0 labels = sk_file.readline().strip().split(',') beg = labels.index('h-sc') data = {} #print ','.join(['#name'] + labels[beg:]) for i in range(1,40): data[str(i)] = {} for l in labels[beg:]: data[str(i)][l] = [] for line in sk_file: line = line.strip().split(',') #limbs = line[beg:] if "-1" not in line and 2 < float(line[labels.index('z-value')]) < 3: id = line[labels.index('name')] for x in labels[beg:]: data[id][x] += [float(line[labels.index(x)])] var = [] for i in data: out = [i] for l in labels[beg:]: if len(data[i][l]) > 1: var += [np.var(data[i][l])] data[i][l] = np.average(data[i][l]) out += [str(np.average(data[i][l]))] #if len(out) > 1: # print ','.join(out) sys.stderr.write(str(div**0.5)+'\n') sys.stderr.write(str(np.average(var))+'\n') sk_file.seek(0) print sk_file.readline().strip() for line in sk_file: line = line.strip().split(',') id = line[labels.index('name')] for l in labels[beg:]: obs = float(line[labels.index(l)]) if obs > 0: diff = obs-data[id][l] line[labels.index(l)] = str(data[id][l] + diff/(div**0.5)) print ','.join(line)