def build(self): """Builds the nodes and edges for the network. """ self.net = NetworkBuilder("biophysical") self.net.add_nodes(N=1, pop_name='Pyrc', potental='exc', model_type='biophysical', model_template='hoc:L5PCtemplate', morphology=None) self._build_exc() self._build_inh() self._save_nets() self._make_rasters() #Final build step. build_env_bionet( base_dir='./', network_dir='./network', dt=self.params["dt"], tstop=self.params["time"]["stop"] * 1000.0, report_vars=['v'], dL=self.params["dL"], #target length (um) of segments spikes_threshold=-10, spikes_inputs=[('exc_stim', 'exc_stim_spikes.h5'), ('prox_inh_stim', 'prox_inh_stim_spikes.h5'), ('dist_inh_stim', 'dist_inh_stim_spikes.h5')], components_dir='../biophys_components', compile_mechanisms=False)
def build_sim(): from bmtk.builder.networks import NetworkBuilder # My all active-model (does not work): #Model ID 496497595 #Cell ID 487667205 # Other perisomatic model (available on Allen Brain Institute - CellTypes): #Model ID 491623973 #Cell ID 490387590 print('BMTK import success') net = NetworkBuilder('mcortex') print('Network builder initiated') # Testing other models: # Surprise, surprise, this does not work... net.add_nodes(cell_name='Pvalb_490387590_m', model_type='biophysical', model_template='ctdb:Biophys1.hoc', model_processing='aibs_perisomatic', dynamics_params='491623973_fit.json', morphology='Pvalb_490387590_m.swc') ''' # Standard net.add_nodes(cell_name='Scnn1a_473845048', potental='exc', model_type='biophysical', model_template='ctdb:Biophys1.hoc', model_processing='aibs_perisomatic', dynamics_params='472363762_fit.json', morphology='Scnn1a_473845048_m.swc') ''' print('Node added') net.build() net.save_nodes(output_dir='network') for node in net.nodes(): print(node) print('Node printed') from bmtk.utils.sim_setup import build_env_bionet print('Setting environment') build_env_bionet( base_dir='sim_ch01', # Where to save the scripts and config files network_dir='network', # Location of directory containing network files tstop=1200.0, dt=0.1, # Run a simulation for 2000 ms at 0.1 ms intervals report_vars=[ 'v' ], # Tells simulator we want to record membrane potential and calcium traces current_clamp={ # Creates a step current from 500.ms to 1500.0 ms 'amp': 0.61, # 0.12#0.610 'delay': 100.0, # 100, #500 'duration': 1000.0 }, include_examples=True, # Copies components files compile_mechanisms=True # Will try to compile NEURON mechanisms ) print('Build done')
def build(self): """Builds the nodes and edges for the network. """ np.random.seed(self.seed) self._set_prefixed_directory("mechanisms") self._set_prefixed_directory("templates") self.net = NetworkBuilder("biophysical") self.net.add_nodes( N=1, pop_name='Pyrc', potental='exc', model_type='biophysical', dynamics_params=self.params["cell"]["dynamic_params"], model_template=self.params["cell"]["model_template"], model_processing=self.params["cell"]["model_processing"], morphology=self.params["cell"]["morphology"]) self._build_exc() self._build_inh() self._save_nets() self._make_rasters() #Final build step. build_env_bionet( base_dir='./', network_dir='./network', dt=self.params["dt"], tstop=self.params["time"]["stop"] * 1000.0, report_vars=self.params["record_cellvars"]["vars"], dL=self.params["dL"], #target length (um) of segments spikes_threshold=-10, file_current_clamp=self.file_current_clamp, spikes_inputs=[('exc_stim', 'exc_stim_spikes.h5'), ('prox_inh_stim', 'prox_inh_stim_spikes.h5'), ('dist_inh_stim', 'dist_inh_stim_spikes.h5')], components_dir='../biophys_components', compile_mechanisms=True) self._modify_jsons()
# Build and save our network thalamus.build() thalamus.save_nodes(output_dir='network') exc_bg_bask.build() exc_bg_bask.save_nodes(output_dir='network') # #print("External nodes and edges built") t_sim = 10000.0 from bmtk.utils.sim_setup import build_env_bionet build_env_bionet( base_dir='./', network_dir='./network', tstop=t_sim, dt=0.05, report_vars=['v'], v_init=-70.0, celsius=31.0, spikes_inputs=[ ( 'mthalamus', # Name of population which spikes will be generated for 'mthalamus_spikes.h5'), ('exc_bg_bask', 'exc_bg_bask_spikes.h5') ], components_dir='components', compile_mechanisms=True)
from bmtk.utils.sim_setup import build_env_bionet build_env_bionet( base_dir='./', # Where to save the scripts and config files components_dir='../biophys_components', network_dir='./network', # Location of directory containing network files tstop=3000.0, dt=0.1, # Run a simulation for 2000 ms at 0.1 ms intervals report_vars=['v'], #clamp_reports=["se"], # Tells simulator we want to record membrane potential and calcium traces current_clamp={ # Creates a step current from 500.ms to 1500.0 ms 'amp': 0.793, #'amp': 0.346, 'delay': 700, 'duration': 2000, 'gids': "all" }, spikes_threshold=-10, # file_current_clamp={ # "input_file": "PN_IClamp/inputs/amps.h5" # }, # se_voltage_clamp={ # "amps":[[-70, -70, -70], [-70, -70, -70]], # "durations": [[2000, 2000, 2000], [2000, 2000, 2000]], # 'gids': [0, 1], # 'rs': [0.001, 0.01], # 'name':"PN_se_clamp" # }, compile_mechanisms=True # Will try to compile NEURON mechanisms )
# from crop_raster import crop_raster # crop_raster("rhythmic_inh_spikes.h5", 'inh_stim_spikes.h5', 120000, num_inh) from bmtk.utils.sim_setup import build_env_bionet build_env_bionet( base_dir='./', network_dir='./network', dt=0.1, tstop=seconds * 1000.0, report_vars=['v', 'cai'], dL=5, # current_clamp={ # Creates a step current from 500.ms to 1500.0 ms # 'amp': 0.793, # #'std': [0.0, 0.0], # 'delay': 700, # 'duration': 2000, # 'gids':"0" # }, # clamp_reports=['se'],#Records se clamp currents. # se_voltage_clamp={ # "amps":[[0, 0, 0]], # "durations": [[120000, 0, 0]], # 'gids': [0], # 'rs': [0.01], # }, spikes_threshold=-10, spikes_inputs=[('exc_stim', 'exc_stim_spikes.h5') ], #, ('inh_stim', 'inh_stim_spikes.h5')], components_dir='../biophys_components', compile_mechanisms=True)
model_type='biophysical', model_template='hoc:IMG', morphology='blank.swc') net.build() net.save_nodes(output_dir='network') build_env_bionet( base_dir='single_cell', # Where to save the scripts and config files network_dir='network', # Location of directory containing network files tstop=2000.0, dt=0.1, # Run a simulation for 2000 ms at 0.1 ms intervals v_init=-54, report_vars=[ 'v', 'ina', 'ik', 'ninf_k1', 'minf_na1', 'hinf_na1' ], # Tells simulator we want to record membrane potential and calcium traces current_clamp={ # Creates a step current from 500.ms to 1500.0 ms 'amp': 0.5, 'delay': 500.0, 'duration': 750.0 }, include_examples=True, # Copies components files compile_mechanisms=True # Will try to compile NEURON mechanisms ) bionet.pyfunction_cache.add_cell_model(loadHOC, directive='hoc', model_type='biophysical') conf = bionet.Config.from_json('single_cell/simulation_config.json') conf.build_env()
shock.build() shock.save_nodes(output_dir='network') #from bmtk.utils.reports.spike_trains import PoissonSpikeGenerator #from bmtk.utils.reports.spike_trains.spikes_file_writers import write_csv #exc_psg = PoissonSpikeGenerator(population='exc_stim') #exc_psg.add(node_ids=range(np.sum(num_exc)), # firing_rate=int(exc_fr) / 1000, # times=(200.0, 500.0)) #exc_psg.to_sonata('exc_stim_spikes.h5') #inh_psg = PoissonSpikeGenerator(population='inh_stim') #inh_psg.add(node_ids=range(np.sum(num_inh)), # firing_rate=int(inh_fr) / 1000, # times=(200.0, 1200.0)) #inh_psg.to_sonata('inh_stim_spikes.h5') from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='./', network_dir='./network', tstop=3000.0, dt=0.1, report_vars=['v', 'cai'], spikes_inputs=[('tone', 'tone_spikes.csv'), ('shock', 'shock_spikes.csv')], components_dir='biophys_components', compile_mechanisms=True)
exc_psg = PoissonSpikeGenerator(population='exc_stim') for i in range(num_exc): exc_psg.add(node_ids=[i], firing_rate=float(exc_frs[i]/1000), times=(1.0*1000, 4.0*1000)) exc_psg.to_sonata('exc_stim_spikes.h5') inh_psg = PoissonSpikeGenerator(population='inh_stim') inh_psg.add(node_ids=range(num_inh), firing_rate=inh_fr/1000, times=(1.0*1000, 4.0*1000)) inh_psg.to_sonata('inh_stim_spikes.h5') from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='./', network_dir='./network', tstop=4000.0, dt = 0.1, report_vars=['v', 'cai'], current_clamp={ # Creates a step current from 500.ms to 1500.0 ms 'amp': [-0.5 for i in range(N)], #'std': [0.0, 0.0], 'delay': [2000 for i in range(N)], 'duration': [1000 for i in range(N)], 'gids':"all" }, spikes_threshold=-10, spikes_inputs=[('exc_stim', 'exc_stim_spikes.h5'), ('inh_stim', 'inh_stim_spikes.h5')], components_dir='../biophys_components', compile_mechanisms=True)
exc_bg_bask.build() exc_bg_bask.save_nodes(output_dir='network') exc_bg_chn.build() exc_bg_chn.save_nodes(output_dir='network') # # print("External nodes and edges built") t_sim = 10000 #was 20000 from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='./', network_dir='./network', tstop=t_sim, dt=0.1, spikes_inputs=[('mthalamus', 'mthalamus_spikes.h5'), ('exc_bg_bask', 'exc_bg_bask_spikes.h5'), ('exc_bg_chn', 'exc_bg_chn_spikes.h5')], components_dir='biophys_components', compile_mechanisms=True) from bmtk.utils.reports.spike_trains import PoissonSpikeGenerator # psg = PoissonSpikeGenerator(population='mthalamus') psg.add(node_ids=range(numPN_A + numPN_C), # Have nodes to match mthalamus firing_rate=0.2, # 15 Hz, we can also pass in a nonhomoegenous function/array times=(0.0, t_sim)) # Firing starts at 0 s up to 3 s psg.to_sonata('mthalamus_spikes.h5') psg = PoissonSpikeGenerator(population='exc_bg_bask') psg.add(node_ids=range(numBask), # Have nodes to match mthalamus
net.add_nodes(N=1, pop_name='Pyrc', potental='exc', model_type='biophysical', model_template='hoc:L5PCtemplate', morphology=None) # Build and save our networks net.build() net.save_nodes(output_dir='network') net.save_edges(output_dir='network') from bmtk.utils.sim_setup import build_env_bionet build_env_bionet( base_dir='./', network_dir='./network', tstop=1000.0, dt=0.1, report_vars=['v'], spikes_threshold=-10, current_clamp={ # Creates a step current from 500.ms to 1500.0 ms 'amp': -0.05, #'std': [0.0, 0.0], 'delay': 500, 'duration': 400, 'gids': "all" }, components_dir='../biophys_components', compile_mechanisms=True)
model_template=syn['PN2PN.json']['level_of_detail']) # dynamics_params='AMPA_ExcToExc.json', # model_template='Exp2Syn') # Build and save our networks net.build() net.save_nodes(output_dir='network') net.save_edges(output_dir='network') exc_stim.build() exc_stim.save_nodes(output_dir='network') import h5py f = h5py.File('exc_stim_spikes.h5', 'w') f.create_group('spikes') f['spikes'].create_group('exc_stim') f['spikes']['exc_stim'].create_dataset("node_ids", data=[0]) f['spikes']['exc_stim'].create_dataset("timestamps", data=[500]) f.close() from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='./', network_dir='./network', tstop=700.0, dt=0.1, report_vars=['v'], spikes_inputs=[('exc_stim', 'exc_stim_spikes.h5')], components_dir='../biophys_components', include_examples=True, compile_mechanisms=True)
# Build and save our network #thalamus.build() #thalamus.save_nodes(output_dir='network') #thalamus.save_edges(output_dir='network') # #print("External nodes and edges built") from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='./', network_dir='./network', tstop=1000.0, dt=0.1, current_clamp={ 'gids': [16483], 'amp': [0.5], 'delay': 100.0, 'duration': 50.0 }, components_dir='biophys_components', compile_mechanisms=True) #from bmtk.utils.reports.spike_trains import PoissonSpikeGenerator # #psg = PoissonSpikeGenerator(population='mthalamus') #psg.add(node_ids=range(numPN_A+numPN_C), # Have nodes to match mthalamus # firing_rate=15.0, # 15 Hz, we can also pass in a nonhomoegenous function/array # times=(0.0, 3.0)) # Firing starts at 0 s up to 3 s #psg.to_sonata('mthalamus_spikes.h5')
exc_bg_bask.build() exc_bg_bask.save_nodes(output_dir='network') # #print("External nodes and edges built") t_sim = 500 from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='./', network_dir='./network', tstop=t_sim, dt = 0.1, report_vars = ['v'], spikes_inputs=[('mthalamus', # Name of population which spikes will be generated for 'mthalamus_spikes.h5'),('exc_bg_bask','exc_bg_bask_spikes.h5')], #current_clamp={ # 'gids': [0], # 'amp': [0.5], # 'delay': 100.0, # 'duration': 50.0 # }, components_dir='biophys_components', compile_mechanisms=True) from bmtk.utils.reports.spike_trains import PoissonSpikeGenerator # psg = PoissonSpikeGenerator(population='mthalamus') psg.add(node_ids=range(numPN_A+numPN_C), # Have nodes to match mthalamus firing_rate=0.002, # 15 Hz, we can also pass in a nonhomoegenous function/array times=(0.0, t_sim)) # Firing starts at 0 s up to 3 s psg.to_sonata('mthalamus_spikes.h5')
'''Before running a simulation, we will need to create the runtime environment, including parameter files, run-script and configuration files. This will also compile mechanisms''' # Mechanisms need to be compiled? compile_mechanisms = True if os.path.isdir('%s/components/mechanisms/x86_64/' % (savedir)): compile_mechanisms = False # Build network build_env_bionet( base_dir=savedir, network_dir='%s/network' % (savedir), tstop=3000.0, dt=0.1, report_vars=['v', 'cai' ], # Record membrane potential and calcium (default soma) spikes_inputs=[ ('mthalamus', '%s/inputs/mthalamus_spikes.h5' % (savedir)) ], # Name of population which spikes will be generated for include_examples=True, # Copies components files compile_mechanisms= compile_mechanisms # If true, will try to compile NEURON mechanisms ) # Update the configuration file to read "thalamus_spikes.csv" inputsFilename = '%s/simulation_config.json' % (savedir) with open(inputsFilename, 'r') as json_file: jsonText = json_file.readlines() for i, line in enumerate(jsonText): if '"input_file"' in line: jsonText[ i] = ' "input_file": "${BASE_DIR}/inputs/mthalamus_spikes.h5",\n'
net.build() net.save(output_dir='network') thalamus.build() thalamus.save(output_dir='network') psg = PoissonSpikeGenerator(population='mthalamus') psg.add( node_ids=1, # Have 5 nodes to match mthalamus firing_rate=8, # 2 Hz times=(0.0, 1)) # time is in seconds for some reason psg.to_sonata('virtual_spikes.h5') print('Number of background spikes: {}'.format(psg.n_spikes())) from bmtk.utils.sim_setup import build_env_bionet build_env_bionet( base_dir='../', network_dir='./network', tstop=1000.0, dt=0.1, report_vars=['v'], spikes_inputs=[('mthalamus', 'virtual_spikes.h5')], #current_clamp={ # 'amp': -0.100, # 'delay': 250.0, # 'duration': 200 #200 for bask 600 for pyr #}, components_dir='../biophys_components', config_file='../simulation_config.json', compile_mechanisms=False)
# Build and save our network thalamus.build() thalamus.save_nodes(output_dir='network') thalamus.save_edges(output_dir='network') print("External nodes and edges built") from bmtk.utils.sim_setup import build_env_bionet build_env_bionet( base_dir='./', network_dir='./network', tstop=1000.0, dt=0.1, spikes_inputs=[( 'mthalamus', # Name of population which spikes will be generated for 'mthalamus_spikes.h5')], report_vars=['v', 'cai' ], # Record membrane potential and calcium (default soma) components_dir='biophys_components', compile_mechanisms=True) from bmtk.utils.reports.spike_trains import PoissonSpikeGenerator psg = PoissonSpikeGenerator(population='mthalamus') psg.add( node_ids=range(numPN_A + numPN_C + numBask), # Have nodes to match mthalamus firing_rate= 15.0, # 15 Hz, we can also pass in a nonhomoegenous function/array times=(0.0, 3.0)) # Firing starts at 0 s up to 3 s
# model_template='hoc:L5PCtemplate', # morphology = None) #L2/3 Cell net.add_nodes(N=1, pop_name='Pyrc', potental='exc', model_type='biophysical', dynamics_params="L2-3_fit.json", model_template="ctdb:Biophys1.hoc", model_processing="aibs_allactive", morphology="L2-3.swc") net.build() net.save_nodes(output_dir='network') from bmtk.utils.sim_setup import build_env_bionet build_env_bionet( base_dir='./', # Where to save the scripts and config files components_dir='../biophys_components', network_dir='./network', # Location of directory containing network files tstop=3000.0, dt=0.1, # Run a simulation for 2000 ms at 0.1 ms intervals report_vars=['v'], dL=5, #clamp_reports=["se"], # Tells simulator we want to record membrane potential and calcium traces spikes_threshold=-10, compile_mechanisms=True # Will try to compile NEURON mechanisms )
net = NetworkBuilder('mcortex') net.add_nodes(cell_name='Cell_PN', potental='exc', model_type='biophysical', model_template='hoc:Cell_PN', morphology=None ) net.build() net.save_nodes(output_dir='network') for node in net.nodes(): print(node) from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='PN_IClamp', # Where to save the scripts and config files components_dir='components', network_dir='network', # Location of directory containing network files tstop=2000.0, dt=0.1, # Run a simulation for 2000 ms at 0.1 ms intervals report_vars=['v'], # Tells simulator we want to record membrane potential and calcium traces current_clamp={ # Creates a step current from 500.ms to 1500.0 ms 'amp': 0.3, 'delay': 500.0, 'duration': 1000.0 }, compile_mechanisms=True # Will try to compile NEURON mechanisms )
#tone_fr = 2 #exc_psg = PoissonSpikeGenerator(population='tone') #exc_psg.add(node_ids=0, # firing_rate=int(tone_fr), # times=(0.0, t_sim/1000)) #exc_psg.to_sonata('tone_poisson_spikes.h5') from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='../', network_dir='./network', tstop=t_sim, dt=0.1, spikes_inputs=[('tone', './10_cell_spikes/tone_spikes.csv'), ('shock', './10_cell_spikes/shock_spikes.csv'), ('bg_pn', '10_cell_spikes/bg_pn_spikes.h5'), ('bg_pv', '10_cell_spikes/bg_pv_spikes.h5')], components_dir='../biophys_components', config_file='config.json', compile_mechanisms=False) psg = PoissonSpikeGenerator(population='bg_pn') psg.add( node_ids=range(8), # need same number as cells firing_rate=2, # 1 spike every 1 second Hz times=(0.0, t_sim / 1000)) # time is in seconds for some reason psg.to_sonata('10_cell_spikes/bg_pn_spikes.h5') print('Number of background spikes for pn: {}'.format(psg.n_spikes()))
inh_stim.build() inh_stim.save_nodes(output_dir='network') from bmtk.utils.reports.spike_trains import PoissonSpikeGenerator from bmtk.utils.reports.spike_trains.spikes_file_writers import write_csv exc_psg = PoissonSpikeGenerator(population='exc_stim') exc_psg.add(node_ids=range(np.sum(num_exc)), firing_rate=int(exc_fr) / 1000, times=(200.0, 1200.0)) exc_psg.to_sonata('exc_stim_spikes.h5') inh_psg = PoissonSpikeGenerator(population='inh_stim') inh_psg.add(node_ids=range(np.sum(num_inh)), firing_rate=int(inh_fr) / 1000, times=(200.0, 1200.0)) inh_psg.to_sonata('inh_stim_spikes.h5') from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='./', network_dir='./network', tstop=1200.0, dt=0.1, report_vars=['v'], spikes_inputs=[('exc_stim', 'exc_stim_spikes.h5'), ('inh_stim', 'inh_stim_spikes.h5')], components_dir='biophys_components', compile_mechanisms=True)
exc_stim.build() exc_stim.save_nodes(output_dir='network') import h5py f = h5py.File('exc_stim_spikes.h5', 'w') f.create_group('spikes') f['spikes'].create_group('exc_stim') f['spikes']['exc_stim'].create_dataset("node_ids", data=[0]) f['spikes']['exc_stim'].create_dataset("timestamps", data=[400]) f.close() from bmtk.utils.sim_setup import build_env_bionet holding_v = -75 build_env_bionet(base_dir='./', network_dir='./network', tstop=500.0, dt = 0.1, report_vars=['v'], spikes_threshold=-10, clamp_reports=['se'],#Records se clamp currents. se_voltage_clamp={ "amps":[[holding_v, holding_v, holding_v]], "durations": [[500, 0, 0]], 'gids': "all", 'rs': [0.01 for i in range(N)], }, spikes_inputs=[('exc_stim', 'exc_stim_spikes.h5')], components_dir='../biophys_components', compile_mechanisms=True)
# #distance_range=[1250,2000], # #distance_range=[-500, 500], # dynamics_params='PN2PN.json', # model_template=syn['PN2PN.json']['level_of_detail']) # Build and save our networks net.build() net.save_nodes(output_dir='network') net.save_edges(output_dir='network') # exc_stim.build() # exc_stim.save_nodes(output_dir='network') # import h5py # f = h5py.File('exc_stim_spikes.h5', 'w') # f.create_group('spikes') # f['spikes'].create_group('exc_stim') # f['spikes']['exc_stim'].create_dataset("node_ids", data=[0]) # f['spikes']['exc_stim'].create_dataset("timestamps", data=[400]) # f.close() from bmtk.utils.sim_setup import build_env_bionet build_env_bionet(base_dir='./', network_dir='./network', tstop=500.0, dt = 0.1, #report_vars=['v'], spikes_threshold=-10, #spikes_inputs=[('exc_stim', 'exc_stim_spikes.h5')], components_dir='../biophys_components', compile_mechanisms=True)
inh_stim.build() inh_stim.save_nodes(output_dir='network') import h5py f = h5py.File('inh_stim_spikes.h5', 'w') f.create_group('spikes') f['spikes'].create_group('inh_stim') f['spikes']['inh_stim'].create_dataset("node_ids", data=[0]) f['spikes']['inh_stim'].create_dataset("timestamps", data=[500]) f.close() from bmtk.utils.sim_setup import build_env_bionet build_env_bionet( base_dir='./', network_dir='./network', tstop=700.0, dt=0.1, report_vars=['v'], clamp_reports=['se'], #Records se clamp currents. se_voltage_clamp={ "amps": [[-40, -70, -70]], "durations": [[1000, 0, 0]], 'gids': [0], 'rs': [0.01], }, spikes_inputs=[('inh_stim', 'inh_stim_spikes.h5')], components_dir='biophys_components', include_examples=True, compile_mechanisms=True)