add data pathto simulation, put contrasts into response figure

This commit is contained in:
Jan Grewe 2020-09-18 17:34:58 +02:00
parent 79837f6117
commit a208965344
2 changed files with 27 additions and 12 deletions

View File

@ -8,6 +8,9 @@ from model import simulate, load_models
from IPython import embed
import matplotlib.pyplot as plt
data_folder = "data"
def append_settings(section, sec_name, sec_type, settings):
section = section.create_section(sec_name, sec_type)
for k in settings.keys():
@ -140,7 +143,7 @@ def get_pre_stimulus(eodf, duration=2, df=20, contrast=20, dt=1./20000):
def simulate_responses(stimulus_params, model_params, repeats=10, deltaf=20):
cell_params = model_params.copy()
cell = cell_params["cell"]
filename = "cell_%s.nix" % cell
filename = os.path.join(data_folder, "cell_%s.nix" % cell)
del cell_params["cell"]
del cell_params["EODf"]
conditions = ["other", "self"]
@ -193,8 +196,6 @@ def main():
for cell_id in range(len(models)):
model_params = models[cell_id]
baseline_spikes = get_baseline_response(model_params, duration=30)
save_baseline_response( "cell_%s.nix" % model_params["cell"], "baseline response", baseline_spikes, model_params)
@ -209,7 +210,7 @@ def main():
1./stimulus_params["chirp_frequency"])
stimulus_params["chirp_times"] = chirp_times
simulate_responses(stimulus_params, model_params, repeats=25, deltaf=deltaf)
exit()
exit() # the first cell only for now!
if __name__ == "__main__":

View File

@ -130,7 +130,7 @@ def create_response_plot(block_map, all_dfs, all_contrasts, all_conditions, curr
despine(ax, ["top", "bottom", "left", "right"], True)
ax.set_ylim([-1.25, 1.25])
ax.legend(ncol=2, loc=(0.01, -0.5), fontsize=7, markerscale=0.5, frameon=False)
"""
# for the largest contrast plot the raster with psth, only a section of the data (e.g. 1s)
t, rates, spikes = get_firing_rate(block_map, current_df, all_contrasts[0], condition, kernel_width=0.001)
avg_resp = np.mean(rates, axis=0)
@ -153,9 +153,9 @@ def create_response_plot(block_map, all_dfs, all_contrasts, all_conditions, curr
if i > 0:
ax.set_yticklabels([])
despine(ax, ["top", "right"], False)
"""
# for all other contrast plot the firing rate alone
for j in range(1, len(all_contrasts)):
for j in range(0, len(all_contrasts)):
contrast = all_contrasts[j]
t, rates, _ = get_firing_rate(block_map, current_df, contrast, condition)
avg_resp = np.mean(rates, axis=0)
@ -177,18 +177,32 @@ def create_response_plot(block_map, all_dfs, all_contrasts, all_conditions, curr
if i > 0:
ax.set_yticklabels([])
despine(ax, ["top", "right"], False)
if i == 2:
ax.text(max_time + 0.025*max_time, 350, "c=%.3f" % all_contrasts[j],
color="#d62728", ha="left", fontsize=7)
if i == 1:
ax.set_xlabel("time [ms]")
if i == 0:
ax.set_ylabel("frequency [Hz]", va="center")
ax.yaxis.set_label_coords(-0.45, 3.5)
name = figure_name if figure_name is not None else "chirp_responses.pdf"
name = (name + ".pdf") if ".pdf" not in name else name
plt.savefig(os.path.join(figure_folder, name))
plt.close()
def chrip_detection_soliloquy(spikes, chirp_times, kernel_width=0.0005):
#
pass
def chirp_detection(block_map, all_dfs, all_contrasts, all_conditions, current_df=None, current_condition=None):
pass
def process_cell(filename, dfs=[], contrasts=[], conditions=[]):
nf = nix.File.open(filename, nix.FileMode.ReadOnly)
block_map, all_contrasts, all_dfs, all_conditions = sort_blocks(nf)
@ -196,12 +210,12 @@ def process_cell(filename, dfs=[], contrasts=[], conditions=[]):
baseline_spikes = read_baseline(block_map["baseline"])
else:
print("ERROR: no baseline data for file %s!" % filename)
fig_name = filename.split(".nix")[0] + "_df_20Hz.pdf"
fig_name = filename.split(os.path.sep)[-1].split(".nix")[0] + "_df_20Hz.pdf"
create_response_plot(block_map, all_dfs, all_contrasts, all_conditions, 20, figure_name=fig_name)
fig_name = filename.split(".nix")[0] + "_df_-100Hz.pdf"
fig_name = filename.split(os.path.sep)[-1].split(".nix")[0] + "_df_-100Hz.pdf"
create_response_plot(block_map, all_dfs, all_contrasts, all_conditions, -100, figure_name=fig_name)
chirp_detection(block_map, all_dfs, all_contrasts, all_conditions)
nf.close()