"""
The analysis functions for EEE stimulation data.
Fig 5. C1 - Model2
Author: Peng Penny Gao
penggao.1987@gmail.com
"""
import json
import matplotlib.pyplot as plt
import os
import numpy as np
import pandas as pd
import analysis_utils as ana # from analysis_utils import *
# import utils as ut # from utils import *
import seaborn as sns
import time
######################################################
def analysis_N(Bnum = 'B34', path = "Fig5/Major/"):
level2 = level[Bnum]
new_data = pd.DataFrame(columns = ['TTX', 'Bnum', 'Loc', 'AMPA_num', 'AMPA_locs', 'AMPA_weight',
'NMDA_num', 'NMDA_locs', 'NMDA_weight',
'spike_num','soma_platamp', 'soma_platdur', 'dend_platamp', 'dend_platdur'])
i = 0 # initialization
for l2 in level2:
path_to_json = path + str(Bnum) + "/"+ str(l2) + "/N"
json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')]
num = len(json_files)
for index, js in enumerate(json_files):
with open(os.path.join(path_to_json, js)) as json_file:
data = json.load(json_file)
filename = json_files[index]
TTX = data['TTX']
Loc = str(l2)
AMPA_num = data['SynAMPA']['num']
AMPA_locs = data['SynAMPA']['locs']
AMPA_weight = data['SynAMPA']['weight']
NMDA_num = data['SynNMDA']['num']
NMDA_locs = data['SynNMDA']['locs']
NMDA_weight = data['SynNMDA']['weight']
spike_num = ana.spike_count(data['recording']['soma']['voltage'])
idx, soma_platamp = ana.soma_plat(data['recording']['soma']['voltage'])
dend_platamp, dend_platdur = ana.dend_plat(data['recording']['basal']['voltage_input'], idx)
soma_platdur = dend_platdur
new_data.loc[index + i*num] = [TTX, Bnum, Loc, AMPA_num, AMPA_locs, AMPA_weight,
NMDA_num, NMDA_locs, NMDA_weight, spike_num, soma_platamp, soma_platdur, dend_platamp, dend_platdur]
i = i + 1
savepath = path + str(Bnum) +'/total_results.csv'
new_data.to_csv(savepath)
######################################################
def analysis_TTX(Bnum = 'B34', path = "Fig5/Major/"):
level2 = level[Bnum]
new_data = pd.DataFrame(columns = ['TTX', 'Bnum', 'Loc', 'AMPA_num', 'AMPA_locs', 'AMPA_weight',
'NMDA_num', 'NMDA_locs', 'NMDA_weight',
'spike_num', 'soma_platamp','soma_platdur', 'dend_platamp', 'dend_platdur'])
i = 0 # initialization
for l2 in level2:
path_to_json = path + str(Bnum) + "/"+ str(l2) + "/TTX"
json_files = [pos_json for pos_json in os.listdir(path_to_json) if pos_json.endswith('.json')]
num = len(json_files)
for index, js in enumerate(json_files):
with open(os.path.join(path_to_json, js)) as json_file:
data = json.load(json_file)
filename = json_files[index]
TTX = data['TTX']
Loc = str(l2)
AMPA_num = data['SynAMPA']['num']
AMPA_locs = data['SynAMPA']['locs']
AMPA_weight = data['SynAMPA']['weight']
NMDA_num = data['SynNMDA']['num']
NMDA_locs = data['SynNMDA']['locs']
NMDA_weight = data['SynNMDA']['weight']
spike_num = 0
idx, soma_platamp = ana.soma_platamp_TTX(data['recording']['soma']['voltage'])
soma_platdur = ana.soma_platdur_TTX(data['recording']['soma']['voltage'])
dend_platamp, dend_platdur = ana.TTX_dend_plat(data['recording']['basal']['voltage_input'], idx)
new_data.loc[index + i*num] = [TTX, Bnum, Loc, AMPA_num, AMPA_locs, AMPA_weight, NMDA_num, NMDA_locs, NMDA_weight, spike_num, soma_platamp, soma_platdur, dend_platamp, dend_platdur]
i = i + 1
savepath = path + str(Bnum) +'/TTX_total_results.csv'
new_data.to_csv(savepath)
######################################################
if __name__ == "__main__":
start_time = time.time()
path = "Fig5/Major/"
level1 = [item for item in os.listdir(path) if not item.startswith('.')]
# The loc sites vary from different basal branch
# Use a dictionary to store each of seperately
level = {}
for l1 in level1:
level[l1] = [item for item in os.listdir(path + str(l1)) if not (item.endswith('.csv') or item.endswith('.DS_Store'))]
for l1 in level1:
analysis_N(l1, path)
analysis_TTX(l1, path)
print("Finished.")
print("--- %s seconds ---" % (time.time() - start_time))