Exemple #1
0
def run(description):
    """Main function for running a perisomatic biophysical experiment.
    
    Parameters
    ----------
    description : Config
        All information needed to run the experiment.
    """
    # configure NEURON
    utils = Utils(description)
    h = utils.h

    # configure model
    manifest = description.manifest
    morphology_path = description.manifest.get_path("MORPHOLOGY")
    utils.generate_morphology(morphology_path.encode("ascii", "ignore"))
    utils.load_cell_parameters()

    # configure stimulus and recording
    stimulus_path = description.manifest.get_path("stimulus_path")
    run_params = description.data["runs"][0]
    sweeps = run_params["sweeps"]
    junction_potential = description.data["fitting"][0]["junction_potential"]
    mV = 1.0e-3

    stimulus_format = manifest.get_format("stimulus_path")
    output_format = manifest.get_format("output")

    if stimulus_format == "NWB" and output_format == "NWB":
        prepare_nwb_output(manifest.get_path("stimulus_path"), manifest.get_path("output"))

    # run sweeps
    for sweep in sweeps:
        if stimulus_format == "NWB":
            utils.setup_iclamp(stimulus_path, sweep=sweep)
        elif stimulus_format == "dat":
            utils.setup_iclamp_dat(stimulus_path)

        vec = utils.record_values()

        h.finitialize()
        h.run()

        # write to an NWB File
        output_data = (numpy.array(vec["v"]) - junction_potential) * mV
        output_times = numpy.array(vec["t"])

        if output_format == "NWB":
            output_path = manifest.get_path("output")
            save_nwb(output_path, output_data, sweep)
        elif output_format == "dat":
            output_path = manifest.get_path("output", sweep)
            DatUtilities.save_voltage(output_path, output_data, output_times)
Exemple #2
0
def read_local_swc():
    morphs=[]
    cells1=[]
    Utils.initialize_hoc()
    swclist=glob.glob('*.swc')
    for swcf in swclist:
        #morphology = swc.read_swc(swcf)
        morphology=Utils.generate_morphology(swcf)
        cell1=Utils.load_cell_parameters()       
        cells1.append(cell1)
        print type(cells1)
        print type(cell1)
        morphology.root
        morphs.append(morphology)
    return morphs,swclist,cells1
Exemple #3
0
def run(description, sweeps=None):
    '''Main function for running a perisomatic biophysical experiment.
    
    Parameters
    ----------
    description : Config
        All information needed to run the experiment.
    '''
    # configure NEURON
    utils = Utils(description)
    h = utils.h
    
    # configure model
    manifest = description.manifest
    morphology_path = description.manifest.get_path('MORPHOLOGY')
    utils.generate_morphology(morphology_path.encode('ascii', 'ignore'))
    utils.load_cell_parameters()
    
    # configure stimulus and recording
    stimulus_path = description.manifest.get_path('stimulus_path')
    run_params = description.data['runs'][0]
    if sweeps == None:
        sweeps = run_params['sweeps']
    junction_potential = description.data['fitting'][0]['junction_potential']
    mV = 1.0e-3
    
    prepare_nwb_output(manifest.get_path('stimulus_path'),
                       manifest.get_path('output'))
    
    # run sweeps
    for sweep in sweeps:
        utils.setup_iclamp(stimulus_path, sweep=sweep)
        
        vec = utils.record_values()
        
        h.finitialize()
        h.run()
        
        # write to an NWB File
        output_data = (numpy.array(vec['v']) - junction_potential) * mV
        
        output_path = manifest.get_path("output")
        save_nwb(output_path, output_data, sweep)
Exemple #4
0
#Based on example code at: http://alleninstitute.github.io/AllenSDK/biophysical_perisomatic_script.html

from allensdk.model.biophysical_perisomatic.utils import Utils
from allensdk.model.biophysical_perisomatic.runner import load_description

description = load_description('manifest.json')

# configure NEURON
utils = Utils(description)
h = utils.h

print("NEURON configured")

# configure model
manifest = description.manifest
morphology_path = description.manifest.get_path('MORPHOLOGY')
utils.generate_morphology(morphology_path.encode('ascii', 'ignore'))
utils.load_cell_parameters()

print("Cell loaded from: %s" % morphology_path)

# configure stimulus and recording
stimulus_path = description.manifest.get_path('stimulus_path')

run_params = description.data['runs'][0]
sweeps = [23, 57, 60]

junction_potential = description.data['fitting'][0]['junction_potential']
mV = 1.0e-3

for sweep in sweeps:
Exemple #5
0
count = 0
for model_id in cell_dirs:

    if os.path.isdir(model_id):
        os.chdir(model_id)
    else:
        os.chdir('../' + model_id)

    print(
        '\n\n************************************************************\n\n    Parsing %s (cell %i/%i)\n'
        % (model_id, count, len(cell_dirs)))

    description = load_description('manifest.json')

    # configure NEURON
    utils = Utils(description)
    h = utils.h

    print("NEURON configured")

    # configure model
    manifest = description.manifest
    morphology_path = description.manifest.get_path('MORPHOLOGY')
    utils.generate_morphology(morphology_path.encode('ascii', 'ignore'))
    utils.load_cell_parameters()

    print("Cell loaded from: %s" % morphology_path)

    h.finitialize()
    h.psection()
Exemple #6
0
import os
from allensdk.core.nwb_data_set import NwbDataSet
import glob
from allensdk.model.biophysical_perisomatic.utils import Utils
from allensdk.model.biophys_sim.config import Config
#import d3py
import pickle
bp = BiophysicalPerisomaticApi('http://api.brain-map.org')
#import unittest
from utils import Utils
import numpy as np
import pdb 
config = Config().load('config.json')
# The readin flag when set enables the wiring to be read in from pre-existing 
# pickled files with rank specific file names.
utils = Utils(config,NCELL=60,readin=0)
info_swc=utils.gcs(utils.NCELL)
utils.wirecells()#wire cells on different hosts.
utils.global_icm=utils.matrix_reduce(utils.icm)
utils.global_ecm=utils.matrix_reduce(utils.ecm)
utils.global_visited=utils.matrix_reduce(utils.visited)
if utils.COMM.rank==0:    
    utils.dumpjson_graph()
utils.h('forall{ for(x,0){ uninsert xtra}}')   #mechanism only needed for wiring cells not for simulating them. 
from rigp import NetStructure
if utils.COMM.rank==0:
    hubs=NetStructure(utils,utils.global_ecm,utils.global_icm,utils.visited,utils.celldict)
    print 'experimental rig'
    hubs.save_matrix()
    # A global analysis of hub nodes, using global complete adjacency matrices.
    #Inhibitory hub
clear_neuron()
    
count = 0
for model_id in cell_dirs:
    
    if os.path.isdir(model_id):
        os.chdir(model_id)
    else:
        os.chdir('../'+model_id)
        
    print('\n\n************************************************************\n\n    Parsing %s (cell %i/%i)\n'%(model_id, count, len(cell_dirs)))
    
    description = load_description('manifest.json')

    # configure NEURON
    utils = Utils(description)
    h = utils.h

    print("NEURON configured")

    # configure model
    manifest = description.manifest
    morphology_path = description.manifest.get_path('MORPHOLOGY')
    utils.generate_morphology(morphology_path.encode('ascii', 'ignore'))
    utils.load_cell_parameters()

    print("Cell loaded from: %s"%morphology_path)
    
    h.finitialize()
    h.psection()