# -*- coding: cp1252 -*-
from custom_params import *
try:
from neuron import h
h.celsius = 35
except:
pass
# load the custom parameters
try:
module = __import__(filename)
globals().update(vars(module))
except:
print 'error during params import'
from copy import copy
from math import pi
use_fi_stdp = False # FastInhibSTDP vs FastInhib
m2g_multiple = False # multiple connections within glomerulus
#plasticity
fi_tau1 = 1.0
fi_tau2 = 100.0
# specific grow parameters
GROW_MAX_ITERATIONS = 2000
GROW_MAX_ATTEMPTS = 100
##### ATTENTION: parameters may change in the future
## apical params
APIC_DIAM = 5. # modified from Francesco's value
APIC_LEN_MAX = 550.
## tuft params
TUFT_DIAM = .8 # modified from Francesco's value
N_MIN_TUFT = 4
N_MAX_TUFT = 6
TUFT_MIN_LEN = 40
TUFT_MAX_LEN = 80
# dendrites paramaters
N_MIN_DEND = 4
N_MAX_DEND = 6
DEND_DIAM = 2
# dendrites definition
N_MIN_DEND = 4
N_MAX_DEND = 9
N_MEAN_DEND = 5
# dendrites max length, normal distribution
DEND_LEN_MU = 837.97
DEND_LEN_VAR = 283.04 ** 2
DEND_LEN_MIN = 50.
DEND_LEN_MAX = 1800.
# dendrites bifurcation parameters, exponential distribution
BIFURC_LEN_MU_1 = 85.32
BIFURC_LEN_MIN_1 = 2.95
BIFURC_LEN_MAX_1 = 325.
BIFURC_LEN_MU_2 = 226.61
BIFURC_LEN_MIN_2 = .5
BIFURC_LEN_MAX_2 = 825.
BIFURC_PROB = [ 0.75, 0.63, 0.42, 0.28, 0.06 ]
# neg. exp
BIFURC_PHI_MU = .5
def gen_dend_diam(dist): return 0.9 + 2.6 * exp(-0.0013 * dist) #value's estimated with a fitting
#class DiamDend:
# cambiare con cautela!
# __DIAM_MIN = 0.2
# __DIAM_MAX = 3.
# NOISE
# __ALPHA_NOISE = 0.3 # peso del noise
# @staticmethod
# def __f_diam(dist): return 0.9 + 2.6 * exp(-0.0013 * dist)
# @staticmethod
# def __ns_diam(dist): return 0.6 + 1.5 * exp(-0.003 * dist)
# @staticmethod
# def genFirstDiam(r): return DiamDend.genDiam(0, r)
# @staticmethod
# def genDiam(dist, r):
# d = DiamDend.__f_diam(dist) + r.normal(0, DiamDend.__ns_diam(dist) ** 2) * DiamDend.__ALPHA_NOISE
# while d < DiamDend.__DIAM_MIN or d > DiamDend.__DIAM_MAX:
# d = DiamDend.__f_diam(dist) + r.normal(0, DiamDend.__ns_diam(dist)) * DiamDend.__ALPHA_NOISE
# return d
## random walk, noise
WALK_RHO = 20.
BIFURC_PHI_MIN = pi / 24.
BIFURC_PHI_MAX = pi / 5.
NS_PHI_B = 0.16
NS_PHI_MIN = -6.26
NS_PHI_MAX = 6.26
NS_THETA_B = 0.1407
NS_THETA_MIN = -1.56
NS_THETA_MAX = 1.18
GROW_RESISTANCE = 1.5
Ngloms = 127 # glomerolous
Nmitral_per_glom = 5 # mitral per glomerolous
Nmitral = Ngloms * Nmitral_per_glom
# Random123 secondary stream identifiers
# note: the primary stream index is the "gid" which is ordered as
# Nmitral, Ngranule, synapses
# Not all secondary identifiers are used for all types
stream_last=1
stream_soma = stream_last; stream_last += 1
stream_dend = stream_last; stream_last += 1
stream_apic = stream_last; stream_last += 1
stream_tuft = stream_last; stream_last += 1
stream_glom = stream_last; stream_last += 1
stream_granule_pos = stream_last; stream_last += 1
stream_mitraldendconnect = stream_last; stream_last += 1000 #allows per dendrite stream
stream_m2g = stream_last; stream_last += 1
stream_dummysyn = stream_last; stream_last += Nmitral #needs to be greater than max_dummies in dymmysyns which is currently 75.
stream_dummygen = stream_last; stream_last += Nmitral
# for the odorstim
stream_last += stream_ods_shift
stream_ods_w = stream_last; stream_last += N_MAX_TUFT
stream_ods_act = stream_last; stream_last += 1
stream_ods_bg = stream_last; stream_last += 1
def ranstream(id1, id2):
#print 'ranstream ', id1, id2
r = h.Random()
r.Random123(id1, id2)
return r
# glomerulus radius
GLOM_RADIUS = 50.
GLOM_DIST = 100.
# glom_axis, define axis size for glomerulus
bulbCenter = [ 50., 1275., 0. ]
bulbAxis = [ 2100., 2800., 2100.]
glomAxis = copy(bulbAxis)
somaAxis = [ copy(bulbAxis), copy(bulbAxis) ]
for i in range(3):
somaAxis[0][i] -= 600 + 100
somaAxis[1][i] -= 600
glomAxis[i] += 300
granule_max_depth = 400.
granAxisInf = [ somaAxis[0][0] - 2 * granule_max_depth,
somaAxis[0][1] - 2 * granule_max_depth,
somaAxis[0][2] - 2 * granule_max_depth ]
from Glom import *
loadGloms() # put glomerulus coords in glomRealCoords
# soma max x and max y
SOMA_MAX_X = 1000
SOMA_MAX_Y = 2000
granule_field_radius = 50. #microns
gid_mitral_begin = 0
gid_granule_begin = gid_mitral_begin + Nmitral
granule_diam = 10.
granule_priden2_len = 250.
Nx_granule = int(somaAxis[0][0] / grid_dim) + 1
Ny_granule = int(somaAxis[0][1] / grid_dim) + 1
Nz_granule = int(somaAxis[0][2] / grid_dim) + 1
granule_origin = [ int(bulbCenter[0] - somaAxis[0][0] * .5),
int(bulbCenter[1] - somaAxis[0][1] * .5),
int(bulbCenter[2] - somaAxis[0][2] * .5) ]
mg_on_granule_std = 25.