"""
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"
]
defread_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 = 0for filename in items:
j = 0
data[i] = {}
zprofile[i] = OrderedDict()
withopen(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:]])
eliflen(row) == 1:
try:
data[i][key] = np.array(data[i][key])
except NameError:
# There's no key yetpass
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
eliflen(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 += 1return data, zprofile, (xx_, yy_, rr_)