def setUpClass(cls, n_src=5): sc = 1e6 cls.data = LoadData(os.path.join(sample_data_path, "ball_and_stick_8")) cls.data.morphology[:,2:6] = cls.data.morphology[:,2:6]/sc cls.reco = sKCSD(cls.data.ele_pos/sc,cls.data.LFP[:,:10]/1e3,cls.data.morphology, n_src_init=n_src, exact=True) cls.segments = cls.reco.values(transformation='segments') cls.loops = cls.reco.values(transformation=None) cls.cartesian = cls.reco.values(transformation='3D') cls.data2 = LoadData(os.path.join(sample_data_path, "Simple_with_branches")) cls.data2.morphology[:, 2:6] = cls.data2.morphology[:, 2:6]/sc cls.data2.ele_pos = cls.data2.ele_pos/sc cls.data2.LFP = cls.data2.LFP[:,:10]/1e3 cls.reco2 = sKCSD(cls.data2.ele_pos, cls.data2.LFP, cls.data2.morphology, n_src_init=n_src, dist_table_density=5)
def setUpClass(cls, n_src=5): """ Check, if it is possible to read in data. This test will be expanded and more neurons read-in. """ cls.data2 = LoadData(os.path.join(sample_data_path, "Simple_with_branches")) cls.data2.morphology[:, 2:6] = cls.data2.morphology[:, 2:6]/sc cls.data2.ele_pos = cls.data2.ele_pos/sc cls.data2.LFP = cls.data2.LFP[:,:10]/1e3 cls.reco2 = sKCSD(cls.data2.ele_pos, cls.data2.LFP, cls.data2.morphology, n_src_init=n_src, dist_table_density=5)
def setUpClass(cls, n_src=5): sc = 1e6 cls.data = LoadData(os.path.join(sample_data_path, "ball_and_stick_8")) cls.data.morphology[:, 2:6] = cls.data.morphology[:, 2:6] / sc cls.reco = sKCSD(cls.data.ele_pos / sc, cls.data.LFP[:, :10] / 1e3, cls.data.morphology, n_src_init=n_src, exact=True) cls.segments = cls.reco.values(transformation='segments') cls.loops = cls.reco.values(transformation=None) cls.cartesian = cls.reco.values(transformation='3D') cls.data2 = LoadData( os.path.join(sample_data_path, "Simple_with_branches")) cls.data2.morphology[:, 2:6] = cls.data2.morphology[:, 2:6] / sc cls.data2.ele_pos = cls.data2.ele_pos / sc cls.data2.LFP = cls.data2.LFP[:, :10] / 1e3 cls.reco2 = sKCSD(cls.data2.ele_pos, cls.data2.LFP, cls.data2.morphology, n_src_init=n_src, dist_table_density=5)
ele_pos = data.ele_pos / scale_factor data.LFP = data.LFP / scale_factor_LFP morphology = data.morphology morphology[:, 2:6] = morphology[:, 2:6] / scale_factor seglen = np.loadtxt(os.path.join(data_dir, 'seglength')) ground_truth = np.loadtxt(os.path.join( data_dir, 'membcurr')) / seglen[:, None] * 1e-3 t0 = int(500 / dt) for i, R in enumerate(R_inits): for j, l in enumerate(lambdas): lambd = l * 2 * (2 * np.pi)**3 * R**2 * n_src ker = sKCSD(ele_pos, data.LFP, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, R_init=R, dist_table_density=50, skmonaco_available=False) if not i and not j: ground_truth_3D = ker.cell.transform_to_3D(ground_truth, what="morpho") vmax, vmin = pl.get_min_max(ground_truth_3D) ker_dir = data_dir + '_R_%f_lambda_%f' % (R, lambd) morpho, extent = ker.cell.draw_cell2D(axis=2) est_skcsd = ker.values() fig, ax = plt.subplots(1, 2) if sys.version_info < (3, 0): path = os.path.join(ker_dir, "preprocessed_data/Python_2") else:
vmax=vmax, alpha=.75) vmax, vmin = pl.get_min_max(ground_truth_t0) for i, di in enumerate(data_dir): data = utils.LoadData(di) ele_pos = data.ele_pos / scale_factor data.LFP = data.LFP / scale_factor_LFP morphology = data.morphology morphology[:, 2:6] = morphology[:, 2:6] / scale_factor ker = sKCSD(ele_pos, data.LFP, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, R_init=R, tolerance=tolerance, dist_table_density=20, exact=True, sigma=0.3) path = os.path.join('simulation', '%s_lambda_%f_R_%f' % (fname_base, l, R)) if sys.version_info < (3, 0): path = os.path.join(path, "preprocessed_data/Python_2") else: path = os.path.join(path, "preprocessed_data/Python_3") if not os.path.exists(path): print("Creating", path) os.makedirs(path)
ax_gt.set_xlabel('time (s)') ax_gt.set_ylabel('#segment') new_fname = fname_base + '.png' fig_name = sKCSD_utils.make_fig_names(new_fname) vmax, vmin = pl.get_min_max(ground_truth) for i, datd in enumerate(data_dir): data = utils.LoadData(datd) ele_pos = data.ele_pos/scaling_factor data.LFP = data.LFP/scaling_factor_LFP morphology = data.morphology morphology[:, 2:6] = morphology[:, 2:6]/scaling_factor k = sKCSD(ele_pos, data.LFP, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, R_init=R, dist_table_density=100) csd = k.values(transformation='segments') cax = ax[i].imshow(csd, extent=[0, tstop, 1, 52], origin='lower', aspect='auto', cmap='seismic_r', vmax=gvmax, vmin=gvmin) ax[3+i].set_title(electrode_number[i]) k.L_curve(lambdas=np.array(lambdas), Rs=np.array(R_inits)) csd_Lcurve = k.values(transformation='segments')
data_dir = simulate() fig, ax_somav, ax = make_figure() ground_truth, data, time, somav = read_in_data(data_dir) toplot = np.argmax(somav) gvmax, gvmin = pl.get_min_max(ground_truth[:, toplot]) new_fname = fname + '.png' fig_name = sKCSD_utils.make_fig_names(new_fname) cell_itself = make_larger_cell(data, n_src) morphology, extent = cell_itself.draw_cell2D() extent = [ex*1e6 for ex in extent] draw_somav(ax_somav, time, somav) k = sKCSD(data.ele_pos, data.LFP, data.morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, exact=True, R_init=R, sigma=0.3) path = os.path.join(data_dir, 'lambda_%f_R_%f_n_src_%d' % (lambd, R, n_src)) if sys.version_info < (3, 0): path = os.path.join(path, "preprocessed_data/Python_2") else: path = os.path.join(path, "preprocessed_data/Python_3") if not os.path.exists(path): print("Creating", path) os.makedirs(path) try: utils.save_sim(path, k) except NameError:
noise = numpy.random.normal(scale=std / nl, size=shape) snr = np.round((new_LFP.var()**.5 / noise.var()**.5)) else: noise = 0 snr = 0 snrs.append(snr) new_LFP = data.LFP + noise k = sKCSD(ele_pos, new_LFP, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, R_init=R, exact=True, sigma=0.3) if sys.version_info < (3, 0): path = os.path.join(fname_base % nl, "preprocessed_data/Python_2") else: path = os.path.join(fname_base % nl, "preprocessed_data/Python_3") if not os.path.exists(path): print("Creating", path) os.makedirs(path) try: utils.save_sim(path, k)
ax_gt.set_title('Ground truth') ax_gt.set_xlabel('time (s)') ax_gt.set_ylabel('#segment') new_fname = fname_base + '.png' fig_name = sKCSD_utils.make_fig_names(new_fname) for i, datd in enumerate(data_dir): print(datd) data = utils.LoadData(datd) ele_pos = data.ele_pos / scaling_factor data.LFP = data.LFP / scaling_factor_LFP morphology = data.morphology morphology[:, 2:6] = morphology[:, 2:6] / scaling_factor k = sKCSD(ele_pos, data.LFP, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, dist_table_density=50, R_init=R) csd = k.values(transformation='segments') print(csd.shape) print(csd.max(), csd.min()) cax = ax[i].imshow(csd, extent=[0, tstop, 1, csd.shape[0]], origin='lower', aspect='auto', cmap='seismic_r', vmax=gvmax, vmin=gvmin) ax[3 + i].set_title(electrode_number[i]) k.L_curve(lambdas=np.array(lambdas), Rs=np.array(R_inits))
fig, ax = plt.subplots(3, 3, figsize=(8, 20)) pl.make_map_plot(ax[0, 0], morpho, extent=extent) pl.make_map_plot(ax[0, 0], ground_truth_t0, extent=extent, title="Ground truth", vmin=vmin, vmax=vmax, alpha=.75) vmax, vmin = pl.get_min_max(ground_truth_t0) for i, di in enumerate(data_dir): data = utils.LoadData(di) ele_pos = data.ele_pos/scale_factor data.LFP = data.LFP/scale_factor_LFP morphology = data.morphology morphology[:, 2:6] = morphology[:, 2:6]/scale_factor ker = sKCSD(ele_pos, data.LFP, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, R_init=R, tolerance=tolerance, dist_table_density=20, exact=True) path = os.path.join('simulation', '%s_lambda_%f_R_%f' % (fname_base, l, R)) if sys.version_info < (3, 0): path = os.path.join(path, "preprocessed_data/Python_2") else: path = os.path.join(path, "preprocessed_data/Python_3") if not os.path.exists(path): print("Creating", path) os.makedirs(path) try:
ax4 = plt.subplot2grid((4, 2), (3, 0)) ax5 = plt.subplot2grid((4, 2), (3, 1)) cell_itself = sKCSDcell(morphology, ele_pos, n_src, tolerance=tolerance, xmin=xmin, xmax=xmax, ymin=ymin, ymax=ymax) cell_itself.distribute_srcs_3D_morph() ker = sKCSD(ele_pos, data.LFP, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, R_init=R, tolerance=tolerance, exact=True) path = os.path.join(data_dir, 'lambda_%f_R_%f_n_src_%d' % (l, R, n_src)) if sys.version_info < (3, 0): path = os.path.join(path, "preprocessed_data/Python_2") else: path = os.path.join(path, "preprocessed_data/Python_3") if not os.path.exists(path): print("Creating", path) os.makedirs(path) try: utils.save_sim(path, ker) except NameError:
aspect='auto', cmap='seismic_r', vmax=gvmax, vmin=gvmin) new_fname = fname_base + '.png' fig_name = sKCSD_utils.make_fig_names(new_fname) for i, datd in enumerate(data_dir): data = utils.LoadData(datd) ele_pos = data.ele_pos/scaling_factor data.LFP = data.LFP/scaling_factor_LFP morphology = data.morphology morphology[:, 2:6] = morphology[:, 2:6]/scaling_factor k = sKCSD(ele_pos, data.LFP, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, R_init=R, exact=True) csd = k.values(transformation='segments') cax = ax[1, i].imshow(csd, extent=[0, tstop, 1, 52], origin='lower', aspect='auto', cmap='seismic_r', vmax=gvmax, vmin=gvmin) ax[1, i].set_title(electrode_number[i]) fig.savefig(fig_name, bbox_inches='tight',
pots = data.LFP / scale_factor_LFP morphology = data.morphology morphology[:, 2:6] = morphology[:, 2:6] / scale_factor ground_truth = np.loadtxt(os.path.join(new_path, 'membcurr')) seglen = np.loadtxt(os.path.join(new_path, 'seglength')) ground_truth = ground_truth / seglen[:, None] * 1e-3 outs = np.zeros((len(n_srcs), len(lambdas), len(R_inits))) for i, n_src in enumerate(n_srcs): for j, l in enumerate(lambdas): for k, R in enumerate(R_inits): lambd = l ker = sKCSD(ele_pos, pots, morphology, n_src_init=n_src, src_type='gauss_lim', lambd=lambd, R_init=R, skmonaco_available=False) est_skcsd = ker.values(estimate='CSD', transformation='segments') outs[i, j, k] = sKCSD_utils.L1_error(ground_truth, est_skcsd) print(outs[i, j, k]) fig, ax = plt.subplots(1, 4, sharey=True) vmax = outs.max() vmin = outs.min() for i, ax_i in enumerate(ax): title = "M = %d" % n_srcs[i] if not i: pl.make_map_plot(ax_i, outs[i],
pots = data.LFP / scale_factor_LFP morphology = data.morphology morphology[:, 2:6] = morphology[:, 2:6] / scale_factor ground_truth = np.loadtxt(os.path.join(new_path, 'membcurr')) seglen = np.loadtxt(os.path.join(new_path, 'seglength')) ground_truth = ground_truth / seglen[:, None] * 1e-3 outs = np.zeros((len(n_srcs), len(lambdas), len(R_inits))) for i, n_src in enumerate(n_srcs): for j, l in enumerate(lambdas): for k, R in enumerate(R_inits): lambd = l / (16 * np.pi**3 * R**2 * n_src) ker = sKCSD(ele_pos, pots, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, R_init=R, exact=True) est_skcsd = ker.values(estimate='CSD', transformation='segments') outs[i, j, k] = sKCSD_utils.L1_error(ground_truth, est_skcsd) print(outs[i, j, k], est_skcsd.min(), est_skcsd.max(), ground_truth.min(), ground_truth.max(), n_src, l, R) fig, ax = plt.subplots(1, 4, sharey=True) vmax = outs.max() vmin = outs.min() for i, ax_i in enumerate(ax): title = "M = %d" % n_srcs[i] if not i:
morphology[:, 2:6] = morphology[:, 2:6]/scale_factor ground_truth = np.loadtxt(os.path.join(new_path, 'membcurr')) seglen = np.loadtxt(os.path.join(new_path, 'seglength')) ground_truth = ground_truth/seglen[:, None]*1e-3 outs = np.zeros((len(n_srcs), len(lambdas), len(R_inits))) for i, n_src in enumerate(n_srcs): for j, l in enumerate(lambdas): for k, R in enumerate(R_inits): lambd = l/(16*np.pi**3*R**2*n_src) ker = sKCSD(ele_pos, pots, morphology, n_src_init=n_src, src_type='gauss', lambd=lambd, R_init=R, exact=True) est_skcsd = ker.values(estimate='CSD', transformation='segments') outs[i, j, k] = sKCSD_utils.L1_error(ground_truth, est_skcsd) print(outs[i, j, k], est_skcsd.min(), est_skcsd.max(), ground_truth.min(), ground_truth.max(), n_src, l, R) fig, ax = plt.subplots(1, 4, sharey=True) vmax = outs.max() vmin = outs.min() for i, ax_i in enumerate(ax): title = "M = %d" % n_srcs[i] if not i: