Exemple #1
0
def init_run_save(group_vec_list, dsname, tstop, attrs):
    """init, run and save the data in fd, creating the dataset `dsname`.

    vec_dict: {field name: Vector recording the field}

    tstop: stop time of simulation

    attrs: dict containing additional attributes for the dataset.
    """
    h.tstop = tend
    logger.info('Init: saving in dataset {}'.format(dsname))
    h.init()
    h.run()
    print('Finished run: saving in dataset {}'.format(dsname))
    for group, vec_dict in group_vec_list:
        data = np.vstack([np.asarray(vec.x) for vec in vec_dict.values()])
        ds = group.create_dataset(dsname, data=data)
        ds.attrs['fields'] = list(vec_dict.keys())
        for k, v in attrs.items():
            ds.attrs[k] = v
Exemple #2
0
def main():
    parser = make_parser()
    args = parser.parse_args()
    logger.info('Command line args: {}'.format(str(sys.argv)))
    print(args.ggn_vm_file)
    # KCs with GGN inhibition
    inhibited_vec = defaultdict(list)
    solo_vec_list = []
    tstart = Q_(args.tstart).to('ms').m
    tend = Q_(args.tend).to('ms').m
    istart = Q_(args.istart).to('nA').m
    iend = Q_(args.iend).to('nA').m
    di = Q_(args.di).to('nA').m
    irange = np.arange(istart, iend + di / 2.0, di)
    logger.info('Starting current: {} nA'.format(istart))
    logger.info('End current: {} nA'.format(iend))
    logger.info('Increment: {} nA'.format(di))
    logger.info('current range: {}'.format(irange))
    ggn_vm = {}
    for input_file in args.ggn_vm_file:
        ggn_vm[input_file] = np.loadtxt(input_file)
    for inject in irange:
        for input_file, vm in ggn_vm.items():
            kc_vvec, ggn_gvec = make_kc_with_dynaclamp(args.kc, args.kc_file,
                                                       inject, tstart, tend,
                                                       vm)
            inhibited_vec[input_file].append((kc_vvec, ggn_gvec))
        # KC without any inhibition
        kc_vvec, ggn_gvec = make_kc_with_dynaclamp(args.kc, args.kc_file,
                                                   inject, tstart, tend)
        solo_vec_list.append(kc_vvec)
    tvec = h.Vector()
    tvec.record(h._ref_t)
    h.tstop = tend
    print('Init')
    h.init()
    print('Run')
    h.run()
    print('Finished simulation')
    fig, ax = plt.subplots(nrows=len(irange) + 1,
                           ncols=len(ggn_vm) + 1,
                           sharex='all',
                           sharey='all')
    t = np.array(tvec.x)
    solo_data = []
    for ii, vvec in enumerate(solo_vec_list):
        ax[ii + 1, 0].plot(tvec, vvec, color='#e66101')
        solo_data.append(np.array(vvec.x))
    combined = np.vstack(solo_data)

    prefix = 'UTC' + timestamp.strftime('%Y%m%d_%H%M%S')
    fname = '{}_solo_kc.npz'.format(prefix)
    np.savez(fname, t=t, vm=combined, inject=irange)
    logger.info('Saved solo KC data in {}'.format(fname))
    for jj, input_file in enumerate(args.ggn_vm_file):
        fname = '{}_{}.npz'.format(prefix, os.path.basename(input_file))
        data = []
        kc_vm_list = inhibited_vec[input_file]
        for ii, (vvec, gvec) in enumerate(kc_vm_list):
            data.append(np.array(vvec.x))
            ax[ii + 1, jj + 1].plot(tvec, vvec, color='#e66101')
            ax[ii + 1, 0].set_ylabel('{} pA'.format(irange[ii] * 1e3))
            # ax[ii+1, 0].set_ylabel('{} pA'.format(int(np.round(irange[ii]*1e3))))  # to avoid decimal point when integer values
        # ax[0, jj+1].plot(tvec, gvec)
        # ax[0, jj+1].plot(ggn_vm[input_file][:,0], ggn_vm[input_file][:,1])
        ax[0, jj + 1].set_title(input_file)
        combined = np.vstack(data)
        np.savez(fname,
                 combined=combined,
                 irange=irange,
                 ggn_vm=ggn_vm[input_file])
        logger.info(
            'Saved data from dynamic clamp with input from {} in {}'.format(
                input_file, fname))
    for axis in ax.flat:
        axis.set_xlim(250, 1750)
        fig.set_size_inches(210 / 25.4, 290 / 25.4)
    fig.tight_layout()
    fig.savefig('{}_KC_dynamic_range_with_ggn_vm.svg'.format(prefix))
    plt.show()
    print('End')