""" Open the results csv files, read their information and return it """ import csv import os import numpy as np from collections import OrderedDict possible_secnames = [ "node", "NODE", "FLUT", "STIN", "MYSA", "Wire" ] def read_results(folder): """ Just read all the results """ # Select the csv files items = sorted(os.listdir(folder)) items = [item for item in items if ".csv" in item] # Data storage variables # Voltage data data = {} # Geometrical properties xx_ = [] yy_ = [] rr_ = [] # z-axis anatomy zprofile = {} # Iterate over the files and read them i = 0 for filename in items: j = 0 data[i] = {} zprofile[i] = OrderedDict() with open(os.path.join(folder, filename), "r") as f: fr = csv.reader(f) for row in fr: isasection = np.array([x in row[0] for x in possible_secnames]).any() if isasection: data[i][key].append([float(x) for x in row[1:]]) elif len(row) == 1: try: data[i][key] = np.array(data[i][key]) except NameError: # There's no key yet pass key = row[0] data[i][key] = [] elif "segment positions" in row[0]: for item in row[1:]: try: value = float(item) except ValueError: segname = item else: zprofile[i][segname] = value elif len(row) == 3: try: xx_.append(float(row[0])) yy_.append(float(row[1])) rr_.append(float(row[2])) except ValueError: pass # When the last key is read, don't forget storing it data[i][key] = np.array(data[i][key]) # wherenodes[i] = np.unique(np.array(wherenodes[i])) del key # axondata = np.array(axondata) # Store data in the dictionary i += 1 return data, zprofile, (xx_, yy_, rr_)