Пример #1
0
 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)
Пример #2
0
 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)
Пример #3
0
    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)
Пример #4
0
 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:
Пример #5
0
                     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)
Пример #6
0
 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')
Пример #7
0
 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:
Пример #8
0
            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)
Пример #9
0
 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))
Пример #10
0
 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:
Пример #11
0
 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:
Пример #12
0
                       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',
Пример #13
0
    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],
Пример #14
0
    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:
Пример #15
0
 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: