#!/usr/bin/env python # -*- coding: utf-8 -*- import os import sys import math sys.path.extend(["..","../channels"]) from channelConstants import * # for CELSIUS, the global temperature import moose from moose.neuroml import * def load_cells(): MML = MorphML({'temperature':CELSIUS}) ## writing ../cells/ below allows load_cells() to be called from within any sister directory ## original mitral cell of Upi with half RM (half tau), -58mV resting potential ## more Na & K in primary dend, some Na & K in tuft, electrode leak removed. #mitral_dict = MML.readMorphMLFromFile('../cells/mitral_bbmit1993davison_neuroML_L1_L2_L3_mod.xml',{}) ## modified as above + for spike initiation at soma for small tuft input and at tuft for large tuft input: ## RA reduced; added hillock and initial segment (with Migliore & Shepherd's Na channel), tuft and prim dend more excitable mitral_dict = MML.readMorphMLFromFile('../cells/mitral_bbmit1993davison_neuroML_L1_L2_L3_mod_withspikeinit.xml',{}) #mitral_dict = MML.readMorphMLFromFile('../cells/mitral_bbmit1993davison_neuroML_L1_L2_L3.xml',{}) #mitral_dict = MML.readMorphMLFromFile('../cells/mitral_bbmit1993davison_neuroML_TEST_L1_L2_L3.xml',{}) ## modified mitral cell with changes as above plus: RM is 1/5th, ## Migliore & Shepherd Na channels, special hillock MS Na channel #mitral_dict = MML.readMorphMLFromFile('../cells/mitral_bbmit1993davisonMS_neuroML_L1_L2_L3.xml',{}) ## Low threshold spiking cell, LTS with shoulder and plateau potential due to extra TCa (low threshold Ca). PG_dict = MML.readMorphMLFromFile('../cells/PG_aditya2013unified_neuroML_L1_L2_L3.xml',{}) ### For the 2012 cell, to get the Ca conc correct, below code was used. Obsolete with the new 2013 cell. ### Low threshold spiking cell, LTS with shoulder and plateau potential due to extra TCa (low threshold Ca). ### Be sure to uncomment the CaBasal setting below too! ### For just the new 2012 PG cell set CaPool.CaBasal to 0.05 mM, else the PG fires a settling burst at t=0. ### PG_dict['PG'] = { segid1 : [ segname,(proximalx,proximaly,proximalz), ### (distalx,distaly,distalz),diameter,length,[potential_syn1, ... ] ] , ... } ### This is a complete hackjob, ideally, I should use a different CaPool. #PG_dict = MML.readMorphMLFromFile('../cells/PG_aditya2012_neuroML_L1_L2_L3.xml',{}) #for seg in PG_dict['PG'].values(): # segname = seg[0] # segpath = '/library/PG/'+segname # if not moose.context.exists(segpath): # print "Missing compartment",segpath # sys.exit(1) # compartment = moose.Compartment(segpath) # for child in compartment.getChildren(compartment.id): # channels and synapses # if moose.Neutral(child).className in ['CaConc']: # CaPool = moose.CaConc(child) # CaPool.CaBasal = 0.05 # mM ### hackjob for PG cell 2012 ends. granule_dict = MML.readMorphMLFromFile('../cells/granule_granadityaMS2007_neuroML_L1_L2_L3.xml',{}) ## make one dictionary out of above dicts. cellSegmentList = {} cellSegmentList.update(mitral_dict) cellSegmentList.update(PG_dict) cellSegmentList.update(granule_dict) return cellSegmentList